必胜高考网 > 计算机类 > 计算机等级 > 资讯 >

2015年计算机二级考试《C语言》提高练习题五份(3)

时间: 家辉2 资讯

  1[单选题] 若有C语言表达式2+3*4+7/3,以下选项中叙述正确的执行顺序是

  A.先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16

  B.先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5

  C.先执行7/3得2,再执行3*4得12,再执行12+2得l4,最后执行2+14得l6

  D.先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9

  参考答案:A

  参考解析:首先,在c语言中,乘除法优先级要高于加减法,其次,除法运算符"/"两边参加运算对象都是整数,运算结果要取整,故排除B,D选项;C语言中。因为“*”和“/”都满足从左到右的运算规则,故应先计算3*4=12。因此c排除,答案为A选项。

  2[单选题] 设有以下函数:

  voidfun(intn,char}s){……}

  则下面对函数指针的定义和赋值均正确的是( )。

  A.void(*pf)(int,char);pf=&fun;

  B.void+pf( );pf=fun;

  C.void*pf( );*pf=fun;

  D.void(*pf)(int,char*);pf=fun;

  参考答案:D

  参考解析:函数的参数可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。函数名代表函数的人口地址,指向函数的指针应该定义为void(+pf)()。如果定义为void·pf(),则表示函数pf返回值为一个基类型为void的指针。因此D选项正确。

  3[简答题]下列给定程序中,函数proc()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

  请修改函数proc()中的错误,使它能得出正确的结果。

  注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

  试题程序:

  参考解析:

  (1)错误:while(*str!='@')

  正确:while(*str)

  (2)错误:(*str)++;

  正确:str++;

  4[单选题] )以下叙述中正确的是(  )

  A.每个后缀为.C的C语言源程序都可以单独进行编译

  B.每个后缀为.C的C语言源程序都应该包含一个main函数

  C.在C语言程序中,main函数必须放在其他函数的最前面

  D.在C语言程序中,只有main函数才可单独进行编译

  参考答案:A

  参考解析:一个普通的C函数可以单独作为一个C的程序文件存在被包含到其他程序中。每个后缀为.C的C语言源程序都可以单独进行编译,所以B。D错误。main函数可以放在程序的开始。中间,最后,所以C错误。

  5[简答题]编写函数void proc(int x,int pp[],int*n),它的功能是求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参返回。

  例如,若x中的值为30,则有4个数符合要求,它们是2 6 10 30。

  请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

  试题程序:

  参考解析:

  【解析】按照题目中要求,求出能整除x且不是奇数的各整数。首先判断小于等于整数x的所有偶数是否能被x整除,将能被x整除的奇数放入数组pp中。最后将数组pp中元素的个数返回到主函数当中。

  6[单选题] 若有下列定义(设int类型变量占2个字节):int j=8,j=9;则下列语句:printf(”i=%%d,j=%%d\n”,i,j);输出的结果是(  )。

  A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9 D.8,9

  参考答案:B

  参考解析:本题考查函数的输出格式。在printf函数中,格式说明符中有两个“%”,表示将第1个%后面的字符原样输出,并不输出其对应的变量值。

  7[单选题] 软件生命周期是指( )。

  A.软件产品从提出、实现、使用维护到停止使用退役的过程

  B.软件从需求分析、设计、实现到测试完成的过程

  C.软件的开发过程

  D.软件的运行维护过程

  参考答案:A

  参考解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

  8[单选题] 以下叙述中错误的是( )。

  A.C程序在运行过程中所有计算都以二进制方式进行

  B.C程序在运行过程中所有计算都以十进制方式进行

  C.所有C程序都需要编译链接无误后才能运行

  D.C程序中字符变量存放的是字符的ASCIl码值

  参考答案:B

  参考解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。

  9[简答题]编写函数fun,其功能是:将所有大于1小于整数m的非素数存人XX所指数组中,非素数的个数通过k返回。

  例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。注意:部分源程序在文件PROGl.C中。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  参考解析:

  【考点分析】

  本题考查:如何判断非素数;循环判断结构;数组的引用。

  【解题思路】

  题目要求将l—m之问的非素数存人数组中,应使用循环判断结构。循环语句用来遍历1一m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存人数组中。这道题目是考查—个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

  【解题宝典】

  判定一个数是否为素数,即该数除了能被l和它本身外,不能被任何数整除。

  代码实现为:

  for(j=2;j

  此语句需要熟记,很多判断素数的题目也可通过此法解决。

  10[填空题]给定程序中,函数fun的功能是:计算形参X所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至X所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

  例如,有l0个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。

  移动后的输出为:46、32、40A5、48、30、6、17、15、26。

  请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

  注意:部分源程序在文件BLANKl.C中。

  试题程序:

  参考解析:

  (1)sdN (2)j++ (3)一1

  【解题思路】

  填空l:由原程序可知,av代表的是平均值,而平均值的求法是所有数的总和除以数的个数,因而本空应该填写s/N。

  填空2:y数组代表暂时存放X数组,if(X[i]>av)表达的是当x数组中的数大于平均值时,应该把这些大于平均值的数放在y数组的前半部分,因而此空应该填y[j++]。

  填空3:此空表明当x[i]不等于什么时,X[i]中的数要赋值给Y数组,由题意可知此空只能填写一1。

55644