下面程序的运行结果是哪一项: #include <stdio.h> main() {char a[]="morning",t; int i,j=0; for(i

高手们哪位知道,下面程序的运行结果是哪一项: #include main() {char a[]="morning",t; int i,j=0; for(i=1;i<7?

下面程序的运行结果是哪一项: #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,不知道正不正确,后面的几步就有点看不懂了。。。。。。求详细思路,谢谢
最新回答
陌上柳絮倾城雪

2024-10-13 08:44:45

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循环

風的廻喑

2024-10-13 08:11:40

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,所以不赋值。
第四次循环
...
这样一直执行到最后,得到i=7,j=2。
此时把a[j]的值也就是r赋值给t,
然后把a[7]的值也就是字符串结束符赋值给a[j],就是原来r的位置。
再把a[j]现在的值赋值给a[7]
最后puts字符串的时候,到a[2]就发现字符串结束符了,所以puts就认为a这个字符串为mo
梦他

2024-10-13 11:39:41

B。

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,所以不赋值。
第四次循环
...
这样一直执行到最后,得到i=7,j=2。
此时把a[j]的值也就是r赋值给t,
然后把a[7]的值也就是字符串结束符赋值给a[j],就是原来r的位置。
再把a[j]现在的值赋值给a[7]
最后puts字符串的时候,到a[2]就发现字符串结束符了,所以puts就认为a这个字符串为mo