问题 单项选择题

有以下程序:
#include <iostream>
#include <string>
using namespace std;
int main ( )

char b1[8] = "abcdefg";
char b2[8],*pb=b1+3;
while (--pb>=b1)
strcpy (b2, Pb) ;
cout<<strlen (b2) <<end1;
return 0;

程序运行后的输出结果是( )。

A.8

B.3

C.1

D.7

答案

参考答案:D

解析: 本题考查常用字符串函数的熟悉程度。先来了解程序中的两个字符串函数:
①函数strcpy()的函数原型为:char*strcpy(char*strDest,const char*strSrC) ;,其功能是复制strSrc所有字符到strDest,并返回strDest。
②函数strlen()的函数原型为:size t strlen(const char *string);,其函数功能为:返回string的长度,不包括结束字符’\0’。
再看程序:程序首先定义了一个字符数组b1和一个指针pb,并让指针pb指向数组中的b1[3]。由于在while语句中,每次循环都是把指针pb所指向的字符串复制到数组b2中,所以可以不考虑循环的中间过程,直接分析最后一次循环。循环体中的最后一次循环条件是pb==b1,即指针pb指向了数组元素b1[0],此时把指针pb所指向的字符串复制到数组b2中,就相当于把数组b1中的字符串复制到数组b2中。所以最后数组b2中保存的就是数组b1中的字符串,其长度为7(不包括字符串结束符号’\0’)。

多选题
单项选择题