有以下程序main(int argc,char *argv[]) {int n=0,i; for(i=1;i n=n*10+*argv[i]-‘0’; printf(“%d\n”,n); } 编译连接后生成可执行文件tt.exe,若运行时输入以下命令行tt 12 345 678 程序运行后的输出结果是( )。A.12B.12345C.12345678D.136

题目

有以下程序

main(int argc,char *argv[]) {int n=0,i; for(i=1;i n=n*10+*argv[i]-‘0’; printf(“%d\n”,n); } 编译连接后生成可执行文件tt.exe,若运行时输入以下命令行

tt 12 345 678 程序运行后的输出结果是( )。

A.12

B.12345

C.12345678

D.136


相似考题
参考答案和解析
正确答案:D
更多“有以下程序 main(intargc,char*argv[]){intn=0,i;for(i=1;in=n*10+*argv[i]-‘0’;printf( ”相关问题
  • 第1题:

    有以下程序main(int argc,char *argv[]){ int n,i=0;while(argv[1][i]!='\0'){ n=fun(); i++;}printf("%d\n",n*argc);}int fun(){ static int s=0;s+=1;return s;}假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令exam 123〈回车〉则运行结果为

    A.6

    B.8

    C.3

    D.4


    正确答案:A
    解析:本题中主函数带有两个参数,DOS下执行命令examl23后,argc为2,argv[1]为“exam”,argv [2]为“123”,且变量s由static定义后,每次调用fun()函数,s保留上一次的值,所以表达式n*argc最终值为3X2=6。

  • 第2题:

    有以下程序:includemain(int argc,char*argv[]){int i=1,n=0;while(i

    有以下程序: #include<string.h> main(int argc,char*argv[]) {int i=1,n=0; while(i<argC){n=n+strlen(argv[i]);i++} printf("%d\n",n); } 该程序生成的可执行文件名为:proc.exe,若在运行时输入命令行: proc 123 45 67 则该程序的输出结果是( )。

    A.3

    B.5

    C.7

    D.11


    正确答案:C

  • 第3题:

    有以下程序includemain(int argc,char*argv[]){int i,len=0;for(i=1;i

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

    A.22

    B.17

    C.12

    D.9


    正确答案:D
    解析:main()函数可以带参数,并且参数只能有两个,第一个参数(argc)类型为整型用来记下命令行的参数个数,第二个参数(argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执行时,argc的值为4,在循环中依次求出argv[1]、argv[2]和argv[3]指向的字符串("abcd"、"efg"和"10")的长度,并把它们加到变量len中,得到len的值9。所以最后输出的len值为9,所以4个选项中D正确。

  • 第4题:

    有以下程序: main(int argc, char *argv[]) { int n=0,i; for (i=1; i<argc; i++) n=n*10+*argv[i]-'0'; printf("%d\n",n); } 编译连接后生成可执行文件tt.exe。若运行时输入以下命令行 tt 12 345 678 程序运行后的输出结果是( )。

    A.12

    B.12345

    C.12345678

    D.136


    正确答案:D
    解析:因为题目给出的命令行为tt12345678,所以main函数的两个参数分别为4和{"tt","12","345","678")。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加*argv[i]-'0',即第i个参数字符串的首字符减去'0'。一个数宁字符减去,O字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择D。

  • 第5题:

    有以下程序 main(int argc,char *argv[]) { int n,i=0; while(argv[1][i]!='\0') { n=fun();i++;} printf("%d\n",n*argc) ; } int fun() { static int s=0; s=-1; return s; } 假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行 cxam123<回车> 则运行结果为

    A.6

    B.8

    C.3

    D.4


    正确答案:A
    解析:主函数的第一个参数argc为整型参数,记下从命令行输入的参数的个数:第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为2,argv[0]指向字符串“exam”,argv[1]指向参数字符串“123”。在main()函数中,while循环执行了3次,调用了3次fun()函数:第一次调用fun()函数时,定义了一个静态变量s并赋初值0,加1后作为函数值返回,n伪值为1;第二次调用fun()函数时,静态变量s的值将保留上一次退出时的值1,再加1为2,作为函数值返回,n的值为2;同理第三次调用返回后,n的值为3。输出n*argc的值为6。