问题
单项选择题
以下程序的输出结果是( )。 #include <stdio.h> #include<string.h> mam() { 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
答案
参考答案:D
解析:首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次:第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strepy(b2,pB) ;”后,b2中的内容为“cdefg”:第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pB) ;”后b2的内容为“bedefg”第三次判断条件“--pb>=b1”使pb的值为“b1”,执行“strcpy(b2,pB) :”后b2的内容为“abcdefg”。最后输出b2数组巾存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行—次while循环判断条件,就执行一次“--pb”,他使得指针pb自减1,即前移一位)所以,4个选项中D为所选。