有如下程序:
#include <iostream> using namespace std; int main() { char str[100], *p; cout<<"Please input a string:"; cin>>str; p=str; for (int i=0; *p!=’\0’; p++,i++); cout<<i<<endl; return 0; }
运行这个程序时,若输入字符串为 abcdefgabcd则输出结果是()。
A.7
B.12
C.13
D.100
参考答案:A
解析:
本题考查的知识点是:默认的输入格式。C++流所识别的输入数据的类型及其默认的输入格式包括: short、int、long(signed、unsigned).与整型常量同 float、double、long double:与浮点数常量同 char(signed、unsigned):第一个非空白字符 char*(signed、unsigned):从第一个非空白字符开始到下一个空白字符结束 void*:无前缀的16进制数 bool:VC6.0中把0识别为false,其他的值均识别为true 注意其中空白字符和非空白字符的概念。空白字符是指空格、Tab符、回车换行等无显示的字符,否则就是非空白字符。本题的输入数据类型为char*,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有一个空格(空白字符)。所以输入后str中为字符串"abcdefg”,主函数中接下来for语句的作用是计算字符串p的长度。故最终输出的结果是"abcdefg”的长度7,本题应该选择A。