问题 单项选择题

以下程序的输出结果是
#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

答案

参考答案:D

解析: 本题考核的知识点是指针变量的运算及字符函数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为所选。

多项选择题
单项选择题 A1型题