国家二级C语言机试(选择题)模拟试卷253
选择题
1.下列对队列的描述中正确的是(D)
A. 队列属于非线性表
B. 队列按“先进后出”原则组织数据
C. 队列在队尾删除数据
D. 队列按“先进先出”原则组织数据
解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾:允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除:反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。
2.下列链表中,其逻辑结构属于非线性结构的是(A)
A. 二叉链表
B. 循环链表
C. 双向链表
D. 带链的栈
解析:二叉链表作为树的存储结构。链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。
3.有以下程序:
#include
main()
{
int i,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++)
printf(“%d*%d=%d”,i,j,i*j);
printf(“\n”);
}
}
程序运行后的输出结果是( )。(B)
A. 1*1=1 1*2=2 1*3=3
2*1=2 2*2=4
3*1=3
B. 1*1=1 1*2=2 1*3=3
2*2=4 2*3=6
3*3=9
C. 1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
D. 1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
解析:考查for循环及其嵌套。第一个for循环用来控制输出行数,第二个for循环用来控制每行输出的表达式个数。
当i=1,j=1时,第一行输出3个表达式:
1*1=1:1 1*2=2 1*3=3
当i-2,j=2时,第二行输出2个表达式:
2*2=4 2*3=6
当i=3,j=3时,第三行输出1个表达式:
3*3=9
当i=4时,第一个for循环中4<4条件不成立,循环结束,整个程序执行完毕。因此答案选B。
4.有以下程序
main(){
char a,b,C,d;
scanf(\\(C)
A. 1 2
B. 1234
C. 12 3
D. 12 34
解析:scanf和getchat.函数分别从键盘上读入一个字符,因此输入12宅格34,则变量a中存放的为1,b中存放2,c中存放空格,d中存放3。
5.有以下程序:
#include
void my()
{
char ch:
ch=getchar();
if(ch!=’c’)my();
putchaur(ch);
}
main()
{
my();
}
执行时,输入abc,则输出结果是( )。(D)
A. abc
B. ababc
C. bca
D. cba
解析:my()递归,直到输入了c开始返回。递归使用的是栈的思想,因此最后输入进去的最先返回并输出。所以结果是cba。
6.检查软件产品是否符合需求定义的过程称为(A)
A. 确认测试
B. 集成测试
C. 验证测试
D. 验收测试
解析:确定测试是验证软件的功能和性能及其他特性是否满足了需求规格说明书中确定的各种需求以及软件配置是否完全、正确。
7.有以下程序:
#include<stdio.h>
main()
{int a=1,b=2,c=3,x;
x=(a^b)&c;
printf(\\(A)
A. 3
B. 1
C. 2
D. 0
解析:本题考查位运算符以及相关运算。^为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。
8.若有定义:int a=7;float x=2.5,y=4.7;则表达式“x+a%3*(int)(x+y)%2/4”的值是( )。(A)
A. 2.500000
B. 2.750000
C. 3.500000
D. 0.000000
解析:此题考查的是变量的类型转换。表达式中“(int)(x+y)把x+y=(7.2)”的值强制转化成整型即得到7,那么“a%3*(int)(x+y)%2”的值为整型常量1,所以“a%3*(int)(x+y)%2/4”的值为0;因为变量x是浮点型变量, 所以表达式“x+a%3*(int)(x+y)%2/4”的结果也是浮点型,得到2.500 000。
9.要求通过while循环不断读入字符,当读入字*N时结束循环。若变量已正确定义,以下正确的程序段是(C)
A. while(ch=getchar( )=’N’)printf(’’%c’’,ch);
B. while(ch=getchar( )=’’N’’)pfintf(’’%c’’,ch);
C. while((ch=getchar( ))!=’N’)printf(’’%c’’,ch);
D. while((ch=getchar( ))=’N’)printf(’’%c’’,ch);
解析:while循环的执行过程如下:①计算while后面圆括号中表达式的值,当值为非0时,执行步骤②:当值为0时,执行步骤④;②执行循环体一次:③转去执行步骤①:④退出循环。在选项C中,表达式(ch=getchar( ))!=’N’表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。
10.有以下程序:
#include<stdio.h>
main()
{
int i;
for(i=1;i<=40;i++)
{
if(i++%5==0)
if(++i%8==0)
printf(\\(C)
A. 5
B. 24
C. 32
D. 40
解析:本题的含义是在1~40的整数范围中,只有当i的值能被5整除,且i+2的值能被8整除时,打印i的值,满足这个条件的只有32,所以选择C选项。
11.C语言主要是借助以下哪种手段来实现程序模块化(D)
A. 定义常量和外部变量
B. 使用丰富的数据类型
C. 使用三种基本结构语句
D. 定义函数
解析:C语言用函数实现软件的模块化设计。
12.若有代数式本文档预览:3600字符,共8703字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载