有以下程序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.6B.8C.3D.4

题目

有以下程序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


相似考题
更多“有以下程序main(int argc,char *argv[]){ int n,i=0;while(argv[1][i]!='\0'){ n=fun(); i++;}pr ”相关问题
  • 第1题:

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

  • 第2题:

    有以下程序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
    通常,main函数都是写成main()的形式,实际上,main函数是可以有形参的,格式为main(argc,argv),其中argc是命令行中参数的个数,argv是一个指向字符串的指针数组。命令行的所有参数都要是字符串。题目中输入exam和123,则argc的值为2,argv[0]存放字符串exam,argv[1]存放字符串123。while语句的判别式为argv[1][i]!=’\0’,而argv[1]存放的是字符串123,故i的值最大为2,while语句能够循环3次。由题中可以知道,语句n=fun()也执行了3次。对fun函数进行分析,fun函数用static语句定义了一个局部变量,该变量的值不会在调用函数结束后消失,而是能够保存下来。下次函数调用时,该变量已有值,为上一次函数结束时的值。初始时局部变量s的值为0,经过第1次fun函数被调用后,s的值变为1,当第2次调用fun函数时,s的初始值为2,而不是0。经过3次调用,s的值变为3,即main函数中变量n的值为3,又因为argc的值为2,则输出结果为3*2=6。

  • 第3题:

    有以下程序: main(int arge,char*argv[]) { int n,i=0; while(arv[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
    解析:主函数的第一个参数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所以,A选项为所选。

  • 第4题:

    有以下程序 main(int arge,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
    解析:主函数的第一个参数alzc为整形参数,记下从命令行输入的参数的个数;笫二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输入的参数字符数。在本例中argc的值为2,argv[0]指向字符串“exam”,argv[1]指向参数字符串“123”。在main()函数中,while循环执行了3次,调用了3次fun()函数;第一次调用了fun()函数时,定义了一个静态变量s并赋初值0,加1后作为函数值返回,n的值为1;第二次调用ram()函数时,静态变量s的值将保留上一次退出时的值1,再加1为2,作为函数值返回,n的值为2;同理第三次调用返回后,n的值为3。输出n*argc的值为6所以,A选项为所选。

  • 第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。