c语言关于函数的有点难的题吧? +++50分(一定追加分数)

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:57:44
参照下面的例题,把包含5个文字型变数的值改成到原型(circular)移动到
(shift)的函数
完成在main()函数使用shift() 函数的简单的例题
有5个变数c1, c2, ..., c5是char型,最初值定为‘A', 'B', 'C', 'D', 'E'。 要是函数shift(&c1, &c2, &c3, &c4, &c5)被呼出的话 变数c1, c2, ..., c5的值变成 'B', 'C', 'D', 'E', 'A'。
函数定义为以下。。
各呼出5次每呼出每呼出时各变数的值都要输出,确定输出的值是不是 BCDEA, CDEAB, DEABC, EABCD, ABCDE
void shift(char *p1, char *p2, char *p3, char *p4, char *p5)
{ ......

#include<stdio.h>
void shift(char *c1, char*c2, char*c3,char*c4, char*c5)
{
char tmp;
tmp=*c1;
*c1=*c2;
*c2=*c3;
*c3=*c4;
*c4=*c5;
*c5=tmp;
}

int main()
{
char c1='A',c2='B',c3='C',c4='D',c5='E';
shift(&c1,&c2,&c3,&c4,&c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
shift(&c1,&c2,&c3,&c4,&c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
shift(&c1,&c2,&c3,&c4,&c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
shift(&c1,&c2,&c3,&c4,&c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
shift(&c1,&c2,&c3,&c4,&c5);
printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5);
system("pause");
return 0;
}

这题是英文题目,用什么翻译工具过来的吧??

居然把call翻译成呼出,我晕,那是“调用”

意思就是错位交换顺序吧,唉,,这样的题,,也叫有难度啊……汗

这个用队列就很简单了,你可以写个队列的数据结构,每调用一次把队头放到队尾就行了.

附参考代码: