以下程序的输出结果是 #include <stdio.h> #include <string,h> main() { char b1[8]="abcdefg",b2[8],*pb=b1+3; while (--p

admin2009-01-15  19

问题 以下程序的输出结果是   #include  <stdio.h>    #include  <string,h>    main()    {  char  b1[8]="abcdefg",b2[8],*pb=b1+3;       while  (--pb>=b1)   strcpy(b2,pB) ;       printf("%d\n",strlen(b2));    }

选项 A、8
B、3
C、1
D、7

答案8

解析 本题考核的知识点是指针变量的运算及字符函数strcpy()的应用。strepy()函数的作用是把第二个参数代表的字符串,复制到第一个参数指向得数组中.首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向 b1[3]。接着执行while循环,该循环执行了3次;第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strcpy(b2,pB) ;”后,b2中的内容为“cdefg”;第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pB) ;”后b2的内容为“bcdefg”第三次判断条件“--pb>=b1”使Pb的值为“b1”,执行“strcpy(b2,pB) ;”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。 (这里还有一个关键点:就是每当执行一次while循环判断条件,就执行一次“--Pb”,他使得指针 pb自减1,即前移一位)所以,4个选项中D为所选。
转载请注明原文地址:https://kaotiyun.com/show/SBXp777K
0

最新回复(0)