战争的英雄人物:C语言问题11

来源:百度文库 编辑:高考问答 时间:2024/04/29 13:20:17
有以下程序
#include <string.h>
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf(“5d\n”,len);
}
经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44
执行后输出结果是
A) 14 B) 12 C) 8 D) 6
能详细的解释下为什么吗?

“\”后一般是跟有特殊含义的字符或是对特殊字符的保留。这么说比较难懂,具体解释一下你的问题。
问题中的“BB”分别代表两个字符。
“\n”代表回车是一个字符,表示字符“换行”。
“\\”代表一个字符,表示字符“\”。
“\'”代表一个字符,表示字符“单引号”。
“\r”代表一个字符,表示字符“回车”。
所以字符串的长度是6。每个字符串在内存中存储时,都要在字符串的末尾加上一个字符串结束的标志“\0”。所以上述字符串在内存中占用字节数为7。

for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
运行:
i=1时,argv[1]为abcd,故len=4
i+=2后,i=3,argv[3]为h3,故len=4+2=6

答案选D

另,程序名本身即ex为argv[0]