国家二级(C语言)机试模拟试卷480
选择题
1.以下能对一维数组a进行初始化的语句是( )。
C
解析:选项A,数组可以看作是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{}对其初始化;选项BD,常量表达式只能放在中括号口中。故C选项正确。
2.下列叙述中,正确的是( )。(A)
A. 软件交付使用后还需要进行维护
B. 软件一旦交付使用就不需要再进行维护
C. 软件交付使用后其生命周期就结束
D. 软件维护是指修复程序中被破坏的指令
解析:软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。
3.有如下嵌套的if语句:
if(a<b)
if(a<e) k=a;
else k=c;
else
if(b<c)k=b;
else k=c;
以下选项中与上述if语句等价的语句是( )。(B)
A. k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B. k=(a<b)?((a<e)?a:c):((b<c)?b:c);
C. k=(a<b)?a:b;k=(b<c)?b:c;
D. k=(a<b)?a:b;k=(a<c)a:c;
解析:题目中嵌套语句的含义是当a<b且a<c成立,则将a的值赋给k。如果a<b成立而a<c不成立将c的值赋给k。如果a<b不成立而b<c成立,将b的值赋给k。如果如果a<b不成立且b<c也不成立,将c的值赋给k。判断条件表达式只有B选项可以表示这个含义。
4.以下关于return语句的叙述中不正确的是( )。(A)
A. 一个自定义函数中必须有一条return语句
B. 一个自定义函数中可以根据不同情况设置多条return语句
C. 如果一个函数有多个return语句,那么不论运行到哪一个return语句,该函数将结束
D. 没有return语句的自定义函数在执行完最后一条语句时返回到调用处
解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值,也可以不包含return语句。
5.设有定义:char p[]={’1’, ’2’, ’3’},*q=p; ,以下不能计算出一个char型数据所占字节数的表达式是( )。(A)
A. sizeof(p)
B. sizeof(char)
C. sizeof(*q)
D. sizeof(p[0])
解析:根据题目中的定义可以知道sizeof(p),计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。
6.下面关于算法的叙述中,正确的是( )。(B)
A. 算法的执行效率与数据的存储结构无关
B. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
C. 算法的窄问复杂度是指算法程序中指令(或语句)的条数
D. 以上三种描述都正确
解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤后结束。
7.有以下定义语句,编译时会出现编译错误的是( )。(D)
A. char a=’\x2d’;
B. char a=’\n’;
C. char a=’a’;
D. char a=\\
解析:D选项中将字符串常量“aa”赋给字符变量a是错误的。
8.if语句的基本形式为:if(表达式)语句,其中“表达式”( )。(A )
A. 可以是任意合法的表达式
B. 必须是逻辑表达式
C. 必须是逻辑表达式或关系表达式
D. 必须是关系表达式
解析:本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。
9.有以下程序:
#include<stdio.h>
main()
{
int i,j,k,a=5,b=6;
i=(a==b)?++a:–b;
j=a++;k=b;
printf(\\(B)
A. 7,6,5
B. 5,5,5
C. 7,5,5
D. 5,6,5
解析:i=(a==b)?++a:–b;中先执行a==b,为否,根据三元运算符语法规则,执行–b,此时b为5,赋给i,i=5;j=a++,将a=5先赋给j,再进行a++,k=b=5,故最后输出的是5,5,5。
10.以下程序的输出结果是( )。
#inc1ude
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. l
D. 9
解析:当外层循环为i时,内层循环i只能取j—i,所以s+=a[0][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,当1=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。
11.待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。(A)
A. 2
B. 3
C. 4
D. 5
解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则放在第二个位置。
12.以下能正确输出字符a的语句是( )。(A)
A. printf(\\
B. printf(\\
C. printf(\\
D. printf(\\
解析:“格式控制串”用来指定每个输出项的输出格式,%s对应字符串,%c对应字符。双引号里面的内容为字符串\\
13.以下不正确的定义语句是( )。
B
解析:本题考查对一维数组的赋值。选项B中,y[5]说明数组中有5个元素,但却给它赋了6个值,数组溢出所以是错误的。
14.有以下程序
#inc1ude
void main()
{ int n=2,k=1;
while(!(k>0||n++));
printf(\\(D)
A. 0 2
B. 1
本文档预览:3600字符,共15455字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载