C语言程序题2

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:28:00
C语言程序题2
请讲解一下。
#include<stdio.h>
void 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\n",a);
}
}

char a[8]={''} -- 这句初始化错了,改成不初始化:
char a[8],t; // 声明 char 数组a, char 变量 t

for(j=0;j<5;j++)a[j]=(char)('a'+j);
数组a 前面5个单元赋初值,
依次为 ASCII 值 'a','b','c','d','e'
因为 'a' + 1 等于 'b','a' + 2 等于 'c',...
加一句:
a[5] = '\0'; // 字符串结束符

t=a[4];for(k=4;k>0;k--)a[k]=a[k-1];a[0]=t;
a 数组 前面5个单元 依次 递推换位,
第5个字放到t,
第4个字放到 第5个位子上
第3个字放到 第4个位子上
第2个字放到 第3个位子上
第1个字放到 第2个位子上
t 放到第1个位子上

递推换位重复4次,换好输出,4次结果:
eabcd
deabc
cdeab
bcdea

字符数组写错了,应该为char a[8]={""};
第一个for循环实现的是将字符数组赋值a,b,c,d,e
第二个for循环中先将字符数组的最后一个放到第一位然后其他的往后推,所以本程序的输出结果为:
eabcd
deabc
cdeab
bcdea

什么啊??
编译都通过不了!!!!

将这个字符串调到最后一位,其他的向前进.
即原字符为abdg
变为bdga输出.