正确答案: A
题目:有以下程序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<回车>则程序的运行结果是
解析:通常,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。
举一反三的答案和解析:
软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。