有以下程序: main(int arge,char*argv[]) { int n,i=0; while(arv[1][i]!=’\0’ { n=fun( );i++; } printf("%d\n",n*

admin2010-01-10  26

问题 有以下程序:    main(int arge,char*argv[])    {    int n,i=0;    while(arv[1]!=’\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

答案1

解析 主函数的第一个参数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选项为所选。
转载请注明原文地址:https://kaotiyun.com/show/dmWp777K
0

最新回复(0)