A-A+

有以下程序 main(int argc char *argv[]) { int n i=0;

2022-08-05 20:33:33 问答库 阅读 171 次

问题详情

有以下程序 main(int argc,char *argv[]) { int n,i=0; while(argv[1][i]!="") { n=fun();i++;} printf("%dn",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。

考点:程序