二级C语言选择题专项强化真题试卷42
选择题
1.若有以下程序:
#include<stdio.h>
main()
{
int a=6,b=0,c=0;
for(;a;)
{b+=a;a-=++c;}
printf(\\(B)
A. 1,14,3
B. 0,14,3
C. 0,18,3
D. 0,14,6
解析:for循环的条件判断是只要a为0就退出循环体。初始值a的值为6,满足条件,执行完循环体后,b的值为6,a—=++c,即a=a—(++c),所以a的值为5,c的值为1。第二次循环后b的值为11,a的值为3,c的值为2。第三次也是最后循环后,a的值为0,b的值为14。c的值为3。
2.以下叙述中错误的是( )。(A)
A. 使用三种基本结构构成的程序只能解决简单问题
B. 结构化程序由顺序、分支、循环三种基本结构组成
C. C语言是一种结构化程序设计语言
D. 结构化程序设计提倡模块化的设计方法
解析:使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,因此A选项错误。
3.有以下程序:
#include<stdio.h>
main()
{
int a[10]={11,12,13,14,15,16,17,18,19,20),*p=a,i=9;
printf(\\(A)
A. 11 20 20
B. 12 20 20
C. 11 19 19
D. 12 19 20
解析:a表示数组a的第一个元素的地址,*p=a则将p指向了数组a的第一个元素的地址,p—a=0,所以a[p—a]即为a[0],p[i]相当于a[i]即a[9],输出第一个结果为11、第二个结果为20。取地址运算符&和取值运算符*互为逆运算,所以*(&a[i]))的值仍为a[i]即a[9],输出第三个结果为20,答案选A。
4.以下叙述正确的是( )。
D
解析:二维数组在初始化时,可以省略第1维,但是不可以省略第2维,可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。故D选项正确。
5.以下叙述错误的是( )。(B)
A. 一个算法所包含的操作步骤应该是有限的
B. 任何能通过编译和运行的算法都一定能得到所期望的结果
C. 算法中每一条指令必须有确切的含义
D. 算法可以用各种描述方法来进行描述
解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。可知A,C,D选项正确。C语言中,通过编译,可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。答案为B选项。
6.以下选项中可用做C程序合法实数的是( )。(B)
A. 3.0e0.2
B. .1e0
C. E9
D. 9.12E
解析:A选项中e后面的指数必须为整数,所以错误。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。
7.某棵树只有度为3的节点和叶子节点,其中度为3的节点有8个,则该树中的叶子节点数为( )。(C)
A. 15
B. 16
C. 17
D. 不存在这样的树
解析:树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。由于只有度为3的节点和叶子节点,可知最后一层都为叶子节点,倒数第二层一部分节点度为3,一部分为叶子节点,其余的节点的度均为3,计算度为3的节点总数(33—1一1)/2<8<(34—1一1)/2可知,树共有4层,前两层有度为3的节点(33—1一1)/2=4个,第三层有33=9个节点,其中4个是度为3的节点,5个是叶子节点,所以该树中的叶子节点数为4×3+5=17。故选C选项。
8.有以下程序:
#include
main()
{ char a,b,c,d;
scarf(\\(A)
A. 12
B. 12
3
C. 1234
D. 12
34
解析:scanf()函数从标准输入输出中读入两个字符’1’、’2’分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受了回车符,故c被赋值为回车符,第二个getchar()读入字符’3’,因此a=’1’,b=’2’,c=,d=’3’。故答案为A选项。
9.关于函数返回值,以下叙述正确的是( )。(A)
A. 函数可以返回整个结构体,即使结构体中有数组
B. 函数只能返回基本数据类型的数值或指针
C. 函数不可以返回一个数组
D. 函数不能没有返回值
解析:函数返回值可以为整型、实型、字符型、指针和结构类型,也可以没有返回值,因此A选项正确,可以返回数组指针,因此可知B、C、D选项错误。故答案为A选项。
10.有以下程序:
#include
int fun(int a[],int n,int x)
{ int*p=a;
while(p<a+n&& *p!=x)P++;
if(p<a+n)return p—a;
else return一1;
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
printf(\\(A)
A. 9
B. 一1
C. 10
D. 0
解析:while(p<a+n && *p!=x)p++;当,p=a;n=10,x=10;时while循环条件成立,直到p=a+9,结束循环,执行下一条语句,if条件成立,返回p—a;此时执行p—a=a+9一a=9;因此,输出9。故答案为A选项。
11.学生选课成绩表的关系模式是SC(S#,C#,G),其中S#为学号,C#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为( )。(A)
A. πS#(σC#=2∧G≥60(SC))
B. σG≥60(SC)
C. σC#=2∧G≥60(SC)
D. πS#(σC#=2(SC))
解析:π表示针对属性进行的投影运算,σ表示针对元组进行的选择运算,∧表示交运算,∨表示并运算。要求检索结果为关系模式中的学生学号S}},首先在几种属性中选择学生学号πS#,其次要在其中选择满足条件的元组C#,条件是课
本文档预览:3600字符,共9073字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载