下面程序的运行结果是哪一项: #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); } (A)mogninr (B)mo (C)morning (D)mornin
我运算到for循环结束时,不知道for循环是不是这一部分(for(i=1;i<7;i++) if(a[j]<a[i]) j=i;),循环结束后我计算的结果是i=3,j=2,不知道正不正确,后面的几步就有点看不懂了。。。。。。求详细思路,谢谢
a这个数组共有7个字母,数组下标为从0到6。
但是作为字符串,还会有一个/0,也就是字符串结束符,这个结束符的下标为7,就是说a[7]就是结束符。
过程是这样的:
第一次循环:
i=1;j=0;
a[i] 为o,a[j]为m,
m小于o,所以把i的值赋给j,此时j=1
第二次循环:
i=2;j=1
a[i]为r a[j]为o
o小于r,所以把i的值赋给j,此时j=2
第三次循环:
i=3;j=2
a[i]为n a[j]为r
n不小于r,所以不赋值。
for循环小括号里第一个“;”
号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。
以上内容参考:百度百科-for循环