2015年计算机二级考试《C语言》提高练习题汇总三份
参考解析:只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选项。
2[填空题]数组xx[M]保存着一组3位数的无符号正整数,其元素的个数通过变量m传人函数proc()。请补充函数proc(),该函数的功能是:从数组xx中找出十位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数proc()返回。
例如,当xx[8]={234 339 666 850 220 448 528 440)时,bb[5]={339 666 220 448 440}。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
参考解析:
【解析】要找出数组xx中十位和百位数字相等的所有整数,首先要得到数组中每一个整数的十位和百位数字,因此,【1】处填“(xx[i]/10)%10”;如果十位和百位数字相等,则将该整数放在数组bb ee,因此,【2】处填“bb[n++]=xx[i]”;符合条件的整数个数放在变量n中,返回给主函数,因此,【3】处填“n”。
3[单选题] 有下列程序:
程序执行后的输出结果是( )。
A.45B.20C.25 D.36
参考解析:在for循环语句中自变量i从0开始,每次自加2,执行s+一*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素,所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。
4[简答题]下列给定程序中,函数proc()的功能是:根据整型形参n,计算如下公式的值。
例如,若n=12,则应输出0.618026。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
(1)错误:int proc(int n)
正确:float proc(int n)
(2)错误:for(i=2;i
正确:for(i=2;i<=n;i++)
由主函数中的调用以及函数proc()的返回值可知,函数proc()的返回值类型应为float型数据。因此,“intproc(int n)”应改为“float proc(int n)”;由题目中所给公式可知,循环中应该包含n的值,因此,“for(i=2;i
5[单选题] 以下叙述中正确的是( )。
A.do-while语句构成的循环不能用其他语句构成的循环来代替
B.do-while语句构成的循环只能用break语句退出
C.用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D.用do-while语句构成循环时,只有在while后的表达式为零时结束循环
参考答案:D
参考解析:选项A,可以用for循环代替;选项B,不满足条件时即条件的逻辑值为假(0)时退出,break也可以;选项C,while(条件),条件为真时进行循环,为假(0)时退出。
6[单选题] 下面程序的运行结果是( )。
A.1B.2C.3D.4
参考答案:B
参考解析:本题中del(char*s)函数实现的功能是逐个读入s数组中的字符,如果遇到数字。则将数字存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串s中所有数字的个数。
7[单选题] 若有以下程序段
则程序段的输出结果是( )
A.5.170000B.5.175000C.5.169000D.5.168000
参考解析:本题考查强制类型转换与输出格式。%f的输出格式是以带小数点的数学形式输出浮点数。首先计算x*1000,结果为5168.94然后+0.5,结果为5169.44。然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果也为双精度数据5.169,输出时按照%f的格式输出,所以输出结果为5.169000。
8[单选题] 表达式'5'一'1'的值是( )。
A.整数4B.字符4C.表达式不合法D.字符6
参考答案:A
参考解析:在C语言中,字符都是变为其对应的ASCⅡ码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCⅡ码值相差仍是4。
9[单选题] 有以下程序:
程序的输出结果是( )。
A.62B.63C.33D.32
参考答案:D
参考解析:本题考查while循环。当i<20时,进入while循环体,循环体内的for循环实现的功能是i%l0==0,也就是说当i值为0或者10的倍数的时候,跳出循环,执行i+=11;a+=i;,若i值不是l0的倍数,则一直执行for循环i--。①判断i=0时,执行i+=11;a+=i;,i=11,a=11;②判断i=10时,跳出for循环,执行i+=11;a+=i;,i=21,a=32;③判断i=21>20,不符合题意,结束循环。
10[单选题] 若有说明语句:double*P,a;则通过scanf语句正确给输入项读人数据的程序段是( )。
A.
B.
C.
D.
参考答案:D
参考解析:double*P,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量P;scanf(”%If”,p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf()函数要求在输入double型数据时,格式控制符必须用%lf。否则,数据不能正确输入。所以选项D正确。