下面程序的运行结果是哪一项: #include <stdio.h> main() {char a[]="morning",t; int i,j=0; for(i=1;i<7
下面程序的运行结果是哪一项:#include<stdio.h>main(){chara[]="morning",t;inti,j=0;for(i=1;i<7;i++)if...
下面程序的运行结果是哪一项: #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,不知道正不正确,后面的几步就有点看不懂了。。。。。。求详细思路,谢谢 展开
我运算到for循环结束时,不知道for循环是不是这一部分(for(i=1;i<7;i++) if(a[j]<a[i]) j=i;),循环结束后我计算的结果是i=3,j=2,不知道正不正确,后面的几步就有点看不懂了。。。。。。求详细思路,谢谢 展开
3个回答
展开全部
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循环
展开全部
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
但是作为字符串,还会有一个/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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询