中国科技博物馆东门:小弟求问C++试题一道。。谢谢 大家 !!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/23 22:01:38
执行语句
char s1[10]="ABC",s2[20]="XYZxyz";
int k=0,j=0;
while(s2[k])k++;
while(s1[j])s2[--k]=s1[++j];
后 数组s2的字符串是
小弟的QQ是 278354645 希望达人相助!!多谢~~

XYZ,用VC试下就知道了

解释下为什么:

1.首先在第一个循环因为 s2 的有6个非空值所以要循环6次所以这里K=6

2.进入第二个循环,第二个循环先看右边,si[++j]; 这个时候脚标先执行++j 所以这里得到的是 si[1] 左边也同样所以是
s1[5] = s2[1]
si[4] = s2[2]
si[3] = s2[3] //这里注意下,解释在下面

在执行第三次之前 s2 的值是XYZxCB
但是需要注意的是 s1[] 这个数组的脚标是从0开始所以C的脚标应该是2,那么3实际上是空的,也就是 '\0' 结束符,因此s2 这个时候的值应该是
XYZ0CB 注意中间的0是十六进制的 00 也就是 '\0' 所以 s2 的值到 '\0' 的地方截断断了,因此只能输出到 XYZ 三个字符!