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

admin2009-01-15  18

问题 以下程序的输出结果是(  )。    #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

答案8

解析 首先定义了两个字符数组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为所选。
转载请注明原文地址:https://jikaoti.com/ti/XTK0FFFM
0

最新回复(0)