下述程序的输出结果是【 】。 # include <stdio.h> void main() { char c1[20]="1234"; char c2[20]="5678"; char *p1,*p2; p

admin2010-01-10  19

问题 下述程序的输出结果是【  】。
   #  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。
转载请注明原文地址:https://kaotiyun.com/show/E1Wp777K
0

最新回复(0)