国家二级C语言机试(选择题)模拟试卷594
选择题
1.下列叙述中正确的是( )。(B)
A. 所谓算法就是计算方法
B. 程序可以作为算法的一种描述方法
C. 算法设计只需考虑得到的计算结果
D. 算法设计可以忽略算法的运算时间
解析:算法是一组有穷指令集,是解题方案的准确而完整的描述。通俗地说,算法就是计算机解题的过程,重在解题方案的设计,并且不等于计算方法,故AC选项错误。程序的编制不可能优于算法的设计,但算法的描述可以用程序、伪代码、流程图来描述,故B选项正确。算法要求执行过程中所需要的基本运算次数和时间最少,即时间复杂度最低,故D选项错误。
2.有两个关系R和T如下:
(A)
A. 投影
B. 交
C. 选择
D. 并
解析:从表图中可以看出,关系T是从关系R中选取一部分字段(A和C)及其值构成新的关系,是一种纵向操作产生新列,属于投影,故A选项正确。
3.若运行时给变量x输入12,则以下程序的运行结果是( )。
main()
{
int x,y;
scanf(”%d”,&x);
y=x>12? x+10:x﹣12;
printf(”%d\n”,y);
}(A)
A. 0
B. 10
C. 12
D. 22
解析:表达式“x>12? x+10:x﹣12”等价于如果x>12成立,则x+10的值为此表达式的值,否则x﹣12为此表达式的值。因为x=12,所以x>12不成立,所以执行“y=x﹣12=0”,运行结果是0。
4.有以下程序:
#include <stdio.h>
int f(int x,int y)
{return((y﹣x)*x);}
void main()
{
int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf(”%d\n”,d);
}
程序运行后的输出结果是( )。(A)
A. 9
B. 10
C. 8
D. 7
解析:d=f(f(a,b),f(a,c))=f((b﹣a)*a,(c﹣a)*a)=f(3,6)=(6﹣3)*3=9。
5.有以下程序:
#include <stdio.h>
void main()
{
int x=0xl3;
if(x=0x18)printf(”T”);
printf(”F\n”);
}
程序运行后的输出结果是( )。(A)
A. TF
B. T
C. F
D. TFT
解析:x=0x18为赋值表达式,十六进制数0x18非0,if条件成立输出T,之后再输出F与回车符。程序运行后的输出结果是TF。
6.下列各项中,对对象概念描述正确的是( )。(A)
A. 对象间的通信靠消息传递
B. 对象是名字和方法的封装体
C. 任何对象必须有继承性
D. 对象的多态性是指一个对象有多个操作
解析:对象之间进行通信的构造叫作消息,故A选项正确。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,故B选项错误。对象不一定必须有继承性,故C选项错误。多态性是指同一个操作可以是不同对象的行为,故D选项错误。
7.以下叙述中错误的是( )。
D
解析:数组初始化时,若所赋初值多于所定义数组的元素个数时,编译器将会报错。
8.有以下程序:
#include <stdio.h>
main()
{
char ch=’Z’;
ch=(ch﹣’A’+1)%26+’A’;
putchar(ch);
printf(”\n”);
}
程序运行后的输出结果是( )。(D)
A. Z
B. Y
C. B
D. A
解析:z的AscIl码是90,A的ASCII码是65,所以ch=(ch﹣’A’+1)%26+’A’=26%26+65=65,65对应的字符即A。
9.下列各项中不合法的常量是( )。(C)
A. 2.E8
B. -.28
C. -028
D. 2e-8
解析:0开头表示的是八进制整型常量,但八进制只能用0~7的数字表示。
10.算法的空间复杂度是指( )。(A)
A. 算法在执行过程中所需要的计算机存储空间
B. 算法所处理的数据量
C. 算法程序中的语句或指令条数
D. 算法在执行过程中所需要的临时工作
解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,故本题答案为A选项。
11.以下关于结构化程序设计的叙述中正确的是( )。(D)
A. 由三种基本结构构成的程序只能解决小规模的问题
B. 结构化程序使用goto语句会很便捷
C. 一个结构化程序必须同时由顺序、分支、循环三种结构组成
D. 在C语言中,程序的模块化是利用函数实现的
解析:D选项正确,C语言允许对函数单独进行编译,从而可以实现模块化。A选项错误,使用三种基本结构组成的程序可以解决复杂的问题;B选项错误,使用got0语句会使程序混乱,程序中应该尽量避免使用goto语句;C选项错误,一个结构化程序没有必要同时由顺序、分支、循环三种结构组成。
12.有以下程序:
#include <stdio.h>
main()
{
char x=2,y=2,z;
z=(y<<1)&(x>>1);
printf(”%d\n”,z);
}
程序运行后的输出结果是( )。(B)
A. 1
B. 0
C. 4
D. 8
解析:y<<1为4,x>>1为l,二者与运算后为0,故B选项正确。
13.设有某函数的说明为:
int*func(int a[10],int n);
则下列叙述中,正确的是( )。(B)
A. 形参a对应的实参只能是数组名
B. 说明中的a[10]写成a[]或*a效
本文档预览:3600字符,共8743字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载