问题 填空题

下述程序的输出结果是 【13】
# 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。

单项选择题
单项选择题