问题
单项选择题
有以下程序
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选项为所选。