这道题真的是这样的么?
如果真的是这样的,那么答案没有一个是正确的呢。
void main()
{
char a[]=“morning”,t;
int i,j=0;
for(i=1;i<7;i++)
if(a[j] j=i;
// 上面这个循环,作用是找到字符串中ASCII码值最大的那个字符的下标
t=a[j];
a[j]=a[7];
a[7]=a[j];
// 关键是这里的a[7]
// a数组的下标为7的元素应该是“0结束标志”啊
// m o r n i n g \0
// 0 1 2 3 4 5 6 7
// 现在把下标为7的"0结束标志“和字母o进行交换,那么结果是:
// m \0 r n i n g o
puts(a);
// 那么输出结果应该是m
// 因为,C语言对于字符串的处理原则是:遇0则止
}
{
}
都没有配对……
不过我还是看懂你的意思了。的确应该为2,答案错了。
第一次循环,y++表达式的值为0,去default,x=0,continue
此时x=0,y=1,z=0
第二次循环,去case
1,x++,break退出switch,z++
此时x=1,y=2,z=1
第三次循环,去default,x=1%2,continue
此时x=1,y=3,z=1
第四次循环,去case
3,x+=3,break退出switch,z++
此时x=4,y=4,z=2
第五次循环去default,x=4%2,continue
此时x=0,y=5,z=2
while条件不成立,退出循环
输出结果0
5
2