国家二级(C语言)机试模拟试卷434
选择题
1.有以下定义语句,编译时会出现编译错误的是( )。(C)
A. char a=’a’
B. char a=’\n’;
C. char a=’aa’;
D. char a=’\x2d’
解析:本题中a为一个字符型变量,只能为其赋值一个字符常量。C项中’aa’不是字符常量,所以会编译错误。BD两项为转义字符,编译可以通过。
2.以下数组定义中错误的是( )。
D
解析:D选项中x[2][3]定义的是一个两行三列的二维数组,而在给数组元素赋值时却赋成了三行,所以错误。
3.下列说法不正确的是(B)
A. int*fun();—fun是一个返回int指针的函数
B. int(*fun)();—fun是一个返回int指针的函数
C. int(*array[5])0;—-array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数。
D. int(*fun(int))(int);—-fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数。
解析:该函数中fun是一个函数指针。指向一个返回int的函数。
4.软件详细设计产生的图如下:
(C)
A. N-S图
B. PAD图
C. 程序流程图
D. E-R图
解析:程序流程图基本图符有3种:控制流(用箭头表示)、加工步骤(用方框表示)、逻辑条件(用菱形表示)。控制结构有5种:①顺序结构;②选择结构;③多分支选择结构;④后判断重复型结构;⑤先判断重复型结构。题目中是选择结构的程序流程图。
5.以下不正确的转义字符是( )。(D)
A. ’\\’
B. ’\d’
C. ’\s’
D. ’088’
解析:’\\’是反斜线符,’\d’是整型变量转义字符,’\s’是字符串型转义字符,C语言中没有规定’088’为转义字符。
6.C语言中规定,程序中各函数之间( )。(A)
A. 既允许直接递归调用也允许间接递归调用
B. 不允许直接递归调用也不允许间接递归调用
C. 允许直接递归调用不允许间接递归调用
D. 不允许直接递归调用允许间接递归调用
解析:本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。
7.下列叙述中正确的是( )。(B)
A. 循环队列是队列的一种链式存储结构
B. 循环队列是队列的一种顺序存储结构
C. 循环队列是非线性结构
D. 循环队列是一种逻辑结构
解析:在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
8.以下程序:
#include
void fun(int x)
{ if(x/2>1)fun(x/2);
printf(\\(D)
A. 1 3 7
B. 7 3 1
C. 7 3
D. 3 7
解析:函数fun是递归函数,递归终止条件是x小于等于3,当大于3时递归调用fun(x/2)。第一次循环x/2=3,调用fun(3),fun(3),x/2=1,跳出if循环,执行输出x=3,然后回到第一次循环,执行if循环的语句,输出x=7。
9.若有定义语句:double x,y,*px,*py;执行了px=&x;PY=&y;之后,正确的输入语句是( )。(A)
A. $carlf(“%If%le”,px,PY);
B. scanf(“%f%f”&x,&y);
C. seanf(“%f%f.t,x,y);
D. seanf(“%If%If”,x,y);
解析:因为x,y都是double型数据,所以输入时的格式字符应为%lf,所以B与C错误。D选项中scanf(”%lf%lf,x,y);应为scani(”%lf%lf\\
10.执行下列程序时输入456<空格>789<空格>123<回车>,输出结果是( )。
#include<stdio.h>
main()
{ char m[80];
int c,i;
scanf(\\(D)
A. 4.56789e+008
B. 4.78912e+006
C. 4,56,789,1 23
D. 4,56,789
解析:scanf函数中的“%c”表示通过键盘只读入一个字符型的数据,“&c”表示将该数据赋值给c,所以c=4。另外,以“%d”格式读入数据时,只有遇到空格或者换行等间隔时符才停止读入,所以i=56,m=789。
11.以下叙述中正确的是( )。(A)
A. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B. 一条语句只能定义一个数组
C. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D. 在引用数组元素时,下标表达式可以使用浮点数
解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,答案A)正确。在使用逗号运算符的情况下,一条语句可以定义多个数组,选项B)错。方括号中可以为整型变量或者常量表达式,选项C)错。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数,选项D)错。答案选A)。
12.下列叙述中正确的是( )。(B)
A. 算法就是程序
B. 设计算法时只需要考虑数据结构的设计
C. 设计算法时只需要考虑结果的可靠性
D. 以上三种说法都不对
解析:栈是按照\\
13.有以下程序
#include <stdio.h>
main()
{ int i, s=0, t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2) s+=*(t+i);
printf(\\(B)
A. 20
B. 25
C. 45
D. 36
解析:统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。
14.若有“char s[3][3]={\\
D
解析:二维字符数组在定义时可省略第一维的维数,根据初始化有3个字符串,所以选项D)中数组有3行,与已知说明语句等价。
15.下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。(D)
A. 只能是整数0或1
B. 只能是整数0或非0整数
C. 可以是结构体类型的数据
D. 可以是任意
本文档预览:3600字符,共15842字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载