国家二级(C语言)机试模拟试卷440
选择题
1.以下叙述中错误的是( )。(A)
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
解析:C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A错误。由C语言构成的指令序列称C源程序,C源程序经过C语言编译程序编译之后生成一个后缀为,OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为,EXE的可执行文件。
2.有以下程序:
#include
main()
{ char a,b,c,d;
seanf(”%c%c”,&a,&b);
c=getchar();d=getchar();
pnnff(“%c%c%c%c\n”,a,b,e,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:回车也是一个字符)
12
34
则输出结果是( )。(D)
A. 12
34
B. 12
C. 1234
D. 12
3
解析:按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。
3.下面程序段的输出结果是( )。
#include<stdio.h>
main()
{float x=1.236547;
printf(\\(A)
A. 1.237000
B. 输出格式说明与输出项不匹,输出无定值
C. 1.236000
D. 1.24
解析:本题中,(int)(x*1000+0.5)的结果为1237,(float)1000是将1000强制转换成noat类型;整个表达式(int)(x*1000+0.5)/(float)1000的结果为1.237000,再以实数(6位小数)形式输出。
4.以下程序段中的变量已正确定义:
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf(\\(C)
A. **
B. ****
C. *
D. ********
解析:由于内层循环for(k=1;k<3;k++)后面直接跟了空语句“;”所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选择C。
5.以下程序:
#include
main()
{ char str[10];
scanff\\(A )
A. how
B. how are you
C. h
D. howareyou
解析:当从键盘输入how are you时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\\\\0”。
6.有以下程序:
#include<stdio.h>
void main()
{
char a,b,c,d;
scanf(\\(C)
A. 12<CR>34
B. 12
C. 12<CR>3
D. 123<CR>4
解析:scanf()函数的一般调用形式为:scanf(格式控制,输入地址列表)。其中,格式控制是用双引号括起来的字符串,包括格式字符和普通字符,格式是是由“%”和格式字符组成。getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制可知,接收输入时分别把1赋给了a,2赋给了b,然后getchar()函数提取一个换行符赋给c,再提取一个字符3赋给d。所以程序的输出结果为:12<CR>3。
7.以下叙述中正确的是( )。(A)
A. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B. 一条语句只能定义一个数组
C. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D. 在引用数组元素时,下标表达式可以使用浮点数
解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,答案A)正确。在使用逗号运算符的情况下,一条语句可以定义多个数组,选项B)错。方括号中可以为整型变量或者常量表达式,选项C)错。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数,选项D)错。答案选A)。
8.有以下程序:
#include<stdio.h>
main()
{ints;
scanf(\\(B)
A. 66656
B. 6566456
C. 66666
D. 6666656
解析:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句。然后退出。所以输入1时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。
9.有以下程序:
#include<stdio.h>
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2==0)continue;x++;
}
x++:
}
printf(\\(C)
A. x=4
B. x=6
C. x=8
D. x=12
解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条语句x++,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。
10.下列叙述中正确的是( )。(D)
A. 栈是\\
B. 队列是\\
C. 循环队列是非线性结构
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
解析:栈是先进后出的线性表,所以A)错误;队列是先进先出的线性表,所以B)错误;循环队列是线性结构的线性表,所以C)错误。
11.有两个关系R,S如下:
本文档预览:3600字符,共14243字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载