河南富豪排行榜2017:[c]下面程序的运行结果是?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 20:52:16
#include<stdio.h>
main()
{ char a[]="morning",t;
int i,j=0;
for(i=1;i<7;i++)
if(a[j]<a[i])j=i;
t=a[j];a[j]=a[7];
a[7]=a[j];puts(a);
}
答案是mo帮我解释一下 谢谢。。。俺实在不明白

第一次:a[0]<a[1]正确所以j变成1,第二次:a[1]<a[2]正确,j为2,第三次错误,j还是2,第4次以后都是错误,所以j一直保持为2,然后你让t等于a[2]就是'r',最后让a[2]等于'\0',a[7]等于'r',最后打印的时候,碰到'\0'就结束了,所以结果是mo也就是前两个字母。

#include<stdio.h>
main()
{ char a[]="morning",t; /* a[0]='m'....a[6]='g',a[7]='\0'*/
int i,j=0;
for(i=1;i<7;i++) /*这行和下一行找到ascII最大的字母*/
if(a[j]<a[i])j=i;
t=a[j];a[j]=a[7]; a[7]=a[j]; /*将'r'和a[7]('\0')交换*/
puts(a); /*输出,遇'\0'停止*/
}
结果是mo