写出下面程序执行后的运行结果___。
#include
int main()
{
char a[8] = { ' ' }, t;
int j, k;
for ( j = 0; j < 5; j++ )
a[j] = (char) ('a' + j);
、 for ( j = 0; j < 4; j++ )
{
t = a[4];
for ( k = 4; k > 0; k-- )
a[k] = a[k - 1];
a[0] = t;
}
printf( "%s", a );
return(0);
}
帮帮忙给出详细的解题思路步骤,不明白答案怎么算出来的
第一个j循环完后a为a,b,c,d,e
第二个j循环开始,j=0,t=e,k循环后,a0=t后a为e,a,b,c,d
j=1,t=d,k循环后,a0=t后a为d,e,a,b,c
j=2,t=c,k循环后,a0=t后a为c,d,e,a,b
j=3,t=b,k循环后,a0=t后a为b,c,d,e,a
输出a为b,c,d,e,a
就是将初始字符串abcde进行循环转圈,最后输出字符串a
结果应该是bcdea,因为循环了四次
每次循环,每个字符向右移动一位,最右侧的字符移动到最左侧
所以四次移动后字符串分别为
eabcd
deabc
cdeab
bcdea
供参考:
#include <stdio.h>
int main()
{
char a[8] = { ' ' }, t;
int j, k;
for (j = 0; j < 5; j++)
a[j] = (char)('a' + j);//a[0]='a' ,a[1]='b' ,a[2]='c' ,a[3]='d' ,a[4]='e'
for (j = 0; j < 4; j++) //将字符串 a 每个字符右移一位,共移动四次。
{ // 第一次:j=0,eabcd
t = a[4]; // 第二次:j=1,deabc
for (k = 4; k > 0; k--) // 第三次:j=2,cdeab
a[k] = a[k - 1]; // 第四次:j=3,bcdea ,结束跳出循环
a[0] = t;
}
printf("%s", a); //最终输出:bcdea
return(0);
}