有以下程序: #include <iostream> #include <string> using namespace std; int main ( ) { char b1[8] = "abcdefg";

admin2010-03-29  27

问题 有以下程序:    #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

答案8

解析 本题考查常用字符串函数的熟悉程度。先来了解程序中的两个字符串函数:
   ①函数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’)。
转载请注明原文地址:https://jikaoti.com/ti/HKW0FFFM
0

最新回复(0)