有以下程序main(int argc char *argv[]){ int n i=0; while(argv[1][i]!=’’){ n=fun(); i++;}

计算机 程序 已帮助 人

有以下程序main(int argc,char *argv[]){ int n,i=0; while(argv[1][i]!=’’) { n=fun(); i++;} printf("%d ",n*argc);}int fun (){ static int s=0; s+=1; return s;}假设程序经编译、连接后生成可执行文件exam.exe,若输入以下命令行exam 123<回车>则程序的运行结果是A.6 B.8 C.3 D.4

热搜:java int类型的取值范围

答案解析

难度★★☆ 搜索
  • 参考答案:A通常,main函数都是写成main()的形式,实际上,main函数是可以有形参的,格式为main(argc,argv),其中argc是命令行中参数的个数,argv是一个指向字符串的指针数组。命令行的所有参数都要是字符串。题目中输入exam和123,则argc的值为2,argv[0]存放字符串exam,argv[1]存放字符串123。while语句的判别式为argv[1][i]!=’’,而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。