A-A+
下述程序的输出结果是【 】。 include <stdio.h> void main() {
问题详情
下述程序的输出结果是【 】。 include <stdio.h> void main() { char c1[20]="1234"; char c2[20]="5678"; char *p1,*p2; p1=c1; p2=c2; while(*p1++) while(*p1++=*p2++); printf("%s,c1); }
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:15678
本题使用了双重while循环,外循环的循环条件是*p1++,即每次循环时让p1指向其后面的一个元素,而p1自增之前所指内容为0时循环结束。内循环的循环条件是*p1++=*p2++,即每次循环时让p1和p2指向其后面的一个元素,而将p2自增之前所指的元素复制到p1自增之前所指的地址中去,直到p2自增之前所指内容为0时循环结束。p1本来一开始是指向c1[0],由于外循环判断条件时让p1自增了,所以进入内循环时p1指向c1[1],而内循环将p2所指字符串复制到p1所指位置,所以内循环的结果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分别被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改写成"5"、"6"、"7"、"8"、"\0"。故程序输出的结果为15678。