有以下程序: #include(strintg.h> main() { char p[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde"; strcpy(p+strlen(q),r);strca

admin2012-12-03  37

问题 有以下程序:
  #include(strintg.h>
  main()
  {   char p[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde";
     strcpy(p+strlen(q),r);strcat(p,q);
     printf("%d%d\n",sizeof(p),strlen(p));
  }
    程序运行后的输出结果是(    )。

选项 A、20 9
B、9  9
C、20  11
D、11  11

答案C

解析 在主函数中,首先定义一个包含20个元素的字符数组p,执行语句“sttcpy(p+strlen(q),r);”,数组p的内容变为{a,b,c,a,b,c,d,c,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0),执行语句“strcpy(p,q);”,数组p的内容变为{a,b,c,a,b,c,d,c,a,b,c,\0,\0,\0,\0,\0,\0,\0,\0,\0},函数sizeof(p)是求数组p的大小,返回20,而函数strlen(p)是计算以p所指起始地址的字符串的长度,这一长度不包括串尾的结束标志0,所以函数返回11。
转载请注明原文地址:https://jikaoti.com/ti/yoB0FFFM
0

最新回复(0)