国家二级C语言机试(选择题)模拟试卷323
选择题
1.结构化程序所要求的基本结构不包括( )。(B)
A. 顺序结构
B. GOTO跳转
C. 选择(分支)结构
D. 重复(循环)结构
解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复3种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
2.已知变量定义i=4,j=7,表达式k=(i++)*(++j)的值为( )。(C)
A. 28
B. 35
C. 32
D. 40
解析:本题主要考查自增运算的步骤,对于后缀方式是“先引用后增值”,而前缀方式是“先增值后引用”,因此i++是引用i为4,而++i是增值后引用,值为8。因此表达式的值为32。
3.有两个关系R和T如下:
(C)
A. 选择
B. 交
C. 投影
D. 并
解析:关系T是由关系R的第3、4行的元组组成的,很显然这是对关系R进行选择运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。选择是从表中选出满足给定条件的元组组成新表。故C选项正确。
4.下列关于switch语句和break语句的结论中,正确的是( )。(A)
A. 在switch语句中可以根据需要使用或不使用break语句
B. 在switch语句中必须使用break语句
C. break语句是switch语句的一部分
D. 以上三个结论中有两个是正确的
解析:在C语言程序中,从语法上说bteak语句并不是switch语句中的一部分,在实际使用过程中也不是必须使用的。break语句是限定转向语句,可以中止执行switch语句,但是执行switch语句时可以不使用break语句。
5.以下程序的输出结果是( )。
#include
main()
{ int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;
for(i=0;i<3;i++)
for(j=i;j<-i;j++)
s+=a[i][a[j][j]];
printf(\\(B)
A. 3
B. 4
C. 1
D. 9
解析:当外层循环为i时,内层循环j只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]=s+a[0][0]=1,当i=1时s=s+a[1][a[1][1]]=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。
6.程序测试的目的是( )。(C)
A. 为被测程序设计正确的测试用例
B. 发现并改正程序中的错误
C. 发现程序中的错误
D. 改正程序中的错误
解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误。故正确答案为C。
7.表达式a+=a=a=9的值是(B)
A. 9
B. 0
C. 18
D. 9
解析:第一步a=9,然后计算a.a的值,并将此值赋给a,因此此时a=0,最后计算a+a,并将此值赋给a,因此最终结果为0。
8.定义学生选修课程的关系模式如下:
S(S#,Sn,Sd,Sa)(其属性分别为学号、姓名、所在系、年龄);
C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);
SC(S#,C#,G)(其属性分别学号、课号和成绩)。
检索选修课程名为“操作系统”的成绩在90分以上(含90分)的学生姓名的表达式是( )。(A)
A. πSn(πS#(πC#(σCn=’’操作系统’’(C)σC>=90(SC))
B. πSn(πS#(πC#(σCn=’’操作系统’’(C))
C. πS#(πC#(σCn=’’操作系统’’(C))
σC>=90(SC))D
D. πSn(πS#(σC>=2,G>=90(SC))
解析:课程名“操作系统”需要在C表中进行查找,成绩在“90分以上(含90分)”需要在SC表中查找,“学生姓名”需要在S表中查找,所以必须对上述三个表进行连接后再进行操作。具体操作是:先从C表中选出课程名是“操作系统”的行σCn=’’操作系统’’(C),但是只要“课程”πC#(σCn=’’操作系统’’(C)),得到筛选结果的一个小表;在SC表中找出“90分以上(含90分)”的行σG>=90(SC),得到第二个小表;两个小表进行连接操作并从结果中取“学号”列πS#(πC#(σCn=’’操作系统’’(C))
σG>=90(SC));这样得到的结果再与S表连接并从结果中只取“姓名”列πSn(πS#(πC#(πC#(σCn=’’操作系统’’(C))
σG>=90(SC))
本文档预览:3600字符,共13774字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载