国家二级C语言机试(选择题)模拟试卷340
选择题
1.下列关于栈的叙述中确的是( )。(B)
A. 栈按“先进先出”组织数据
B. 栈按“先进后出”组织数据
C. 只能在栈底插入数据
D. 不能删除数据
解析:栈是按先进后出的原则组织数据的,数据的插入和删除都在栈顶进行操作。
2.若执行下述程序时,若从键盘输入6和8,结果为( )。
main()
{int a,b,s;
scanf(’’%d%d’’,&a,&b);
S=a:
if(s=b)s*=s:
printf(’’%d’’,s);
}(B)
A. 36
B. 64
C. 48
D. 以上都不对
解析:首先通过scanf函数把从键盘读入的数据赋给变量a和b,if语句判断如果a和b不等,执行s=s*s=64。
3.下列关于栈的描述中正确的是(C)
A. 在栈中只能插入元素而不能删除元素
B. 在栈中只能删除元素而不能插入元素
C. 栈是特殊的线性表,只能在一端插入或删除元素
D. 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
4.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 以上说法都不对
解析:循环队列中的元素个数随队头指针与队尾指针的变化而动态变化,选A。
5.下列关于线性链表的叙述中,正确的是( )。(C)
A. 各数据节点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B. 各数据节点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C. 进行插入与删除时,不需要移动表中的元素
D. 以上都不正确
解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据节点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
6.软件测试的目的是( )。(D)
A. 评估软件可靠性
B. 发现并改正程序中的错误
C. 改正程序中的错误
D. 发现程序中的错误
解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,更不是为了评估软件或改正错误。
7.有以下程序:
#include
void fun(char(*P)[6])
{
int 1;
for(i=0;i<4;i++)
printf(“%c”,P[i][i]);
prinff(“\n”);
}
main()
{
char S[6][6]={.“ABCD”,“abcde”,
“12345”,“FGHIJ”,“fghij”,“54321”};
fun(s);
}
程序的运行结果是( )。(B)
A. Aal F
B. Ab3I
C. ABCD
D. fghij
解析:函数fun的功能是输出s[i][i],所以结果会输出s[0][0]、s[1][1]、s[2][2],即Ab31。
8.设变量已正确定义并赋值,以下正确的表达式是(A)
A. x=y+z+5,++y
B. int(15.8%5)
C. x=y*5=x+z
D. x=25%5.0
解析:在赋值表达式中,赋值符号”:”的左边只能为赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项C错误;在取余运算中,运算符”%”两边都必须是整型数据,所以选项B、D错误,选项A是C语言中的逗号表达式。
9.正确的C语言表达式是( )。(A)
A. char A=65+1,b=’b’;
B. int x=y=0;
C. float a=1;int *p=&a,*q=&b;
D. double a=0.0;b=1.1;
解析:C语言可以同时定义变量并赋值,选项B中对变量声明类型且赋值的情况是不允许出现的。必须单独定义且赋值。选项C中对于指针变量的赋值须为同型指针。选项D中C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号隔开,而不是用分号隔开;在计算机存储字符时将字符相应的ASCⅡ码以其对应的二进制进行存放,选项A中的定义是合法的。
10.下列一维数组说明中,不正确的是( )。(A)
A. int N;
scanf(\\
B. float a[]={1,6,6,0,2};
C. #define S 10
int a[S];
D. #define S 10
int a[S+5];
解析:本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名[常量表达式]。其中,“[]”中的内容可以是整型常量,也可以是整型表达式。选项A)中的N是一个变量,所以错误。
11.以下程序段中,与语句k=a>b?(b>c?1:0):0;功能相同的是( )。(B)
A. if((a>b)||(b>c))k=1;
else k=0;
B. if((a>b)&&(b>c))k=1;
else k-0;
C. if(a<=b)k=0;
else if(b<=c)k=1;
D. if(a>b)k=1;
else if(b>c)k=1;
else k=0;
解析:条件表达式的含义是,如果表达式1成立,结果为表达式2的值,如果不成立,则为表达式3的值。所以题干中k的值这样取值:如果a>b且b>c,k值结果为1,如果a>b且b<c,则值为0。如果a<b,k值为0,也就是只要a>b与b>c中只要有一个条件不成立,k的值就为0,所以选择B选项。
12.有以下程序:
#include<stdio.h>
main( )
{int y=10;
while(y–);
printf(\\(B)
A. y=0
B. y=-1
C. y=1
D. while构成无限循环
解析:执行y–直到值为0,由于y–是先用再减,所以退出循环时,y的值为-1。
13.已定义以下函数int fun(int*P){return*P;}fun函数的返回值是( )。(A)
A. 一个整数
B. 不确定的值
C. 形参P中存放的值
D. 形参P的地址值
解析:返回值为指针变量指向的数据,该
本文档预览:3600字符,共11842字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载