有以下程序: #include <string.h> main(int argc, char *argv[ ]) { int i,len=0; for(i=1;i<argc;i+=2) len+=strlen(argv[

admin2009-04-15  12

问题 有以下程序:    #include  <string.h>    main(int  argc, char *argv[ ])    {  int i,len=0;    for(i=1;i<argc;i+=2)    len+=strlen(argv);    printf("%d\n",len);    }    经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行    ex    abcd    efg    h3    k44    执行后输出的结果是(  )。

选项 A、14
B、12
C、8
D、6

答案8

解析 主函数的第一个参数argc为整形参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为5,argv[0]指向字符串“ex”,argv[l]指向参数字符串“abcd”, argv[2]指向字符串“efg”,argv[3]指向参数字符串“h3”,  argv[4]指向参数字符串“k44”。在main()函数中,for循环执行了两次,当i =1时,len=O+strlen(argv[1]),而其中argv[l]=“abcd”,故此时len的值为4;当i=3时,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此时len的值为6;当i=5时,退出循环,故最后输出的len值为6。所以,4个选项中选项D符合题意。
转载请注明原文地址:https://jikaoti.com/ti/20K0FFFM
0

最新回复(0)