国家二级(C语言)机试模拟试卷453
选择题
1.有以下程序:
#include<stdio.h>
main()
(
int stlm=10,n=1;
while(n<3)
{sum=sum—n;n++;}
printf(\\(B)
A. 2,8
B. 3,7
C. 3,8
D. 2,7
解析:考查while循环。当循环条件n<3成立的时候,执行循环体{sum=sum—n;n++;}中的语句。循环初值sum为10,n为1。首先判断循环条件n<3成立,开始第1次循环,执行sum=sum—n=10—1=9,执行n++,即将n中的值加1,执行后n为2;此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行第2次循环,执行sum=sum—n=9—2=7,执行n++,即将n中的值加l,执行后n为3;n为3时,循环条件不成立,结束循环,输出结果为3,7。故B选项正确。
2.对于循环队列,下列叙述中正确的是( )。(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:在循环队列中,用队尾指针(rear)指向队列中的队尾元素,用队头指针(front)指向队头元素的前一个位置。在循环队列中,一般情况下rear>front,当存储空间的最后一个位置被使用,而新元素要入队时,如果存储空间的第一个位置空闲,便可将元素插入到第一个位置,此时存储空间的第一个位置作为队尾,便有front>rear。
3.结构化程序设计主要强调的是( )。(D)
A. 程序的规模
B. 程序的效率
C. 程序设计语言的先进性
D. 程序易读性
解析:结构化程序设计强调的是程序的易读性。
4.已知char a;int b;float c;double d;则表达式a-b+c-d结果为( )型。(A)
A. double
B. float
C. int
D. char
解析:C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:①运算中将所有char型转换成int型,float型转换成double型;②低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为:char->int->unsigned->long->float->double;③赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。
5.有以下程序:
#include<stdio.h>
void fun(int a[],int n)
{int i,t;
for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)printf(\\(A)
A. 321678
B. 876543
C. 1098765
D. 345678
解析:本题中的函数fun()的功能是将数组k中前5个元素倒序,所以返回后数组k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印输出k[2]到k[7]元素的值,即321678,所以选择A。
6.下述程序的输出结果是( )。
#include<stdio.h>
void main()
{ char a=1,b=2;
char c=a^b<<2:
printf(’’\n%d’’,c);
}(A)
A. 9
B. 10
C. 12
D. 2
解析:本题主要考查C语言最基本的算术运算“左移(<<)”和“异或(^)”。
“左移”或“右移”运算表达式的一般形式为:x<<n或x>>n。“左移(<<)”运算的规则是将x的二进制位全部向左移动n位,将左边移动的高位舍弃,右边空出的位补0; “右移(>>)”运算的规则是将x的二进制位全部向右移动n位,将右边移出的低位舍弃,左边高位空出要根据原来符号位的情况进行补充,对无符号数则补0,对有符号数,若正数则补0,若为负数则补1。
“异或”运算是当两个运算量的相应位相同时结果为0,不相同时结果为1。b=2的二进制为(00000010)b<<2后为00001000,a=1的二进制为00000001,所以c=a^b<<2为00001001,转化为十进制后为9。
7.有以下程序段:
char ch;int k;
ch=’a’;k=12;
printf(\\(D)
A. 因变量类型与格式描述符的类型不匹配,输出无定值
B. 输出项与格式描述符个数不符,输出为零值或不定值
C. a,97,12k=12
D. a,97,k=12
解析:字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。“ch=’a’”,%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出“k=”,然后以十进制代码输出k的值,为12。
8.若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是( )。(A)
A. (x-y<0||x-y>0)
B. (x-y<0)
C. (x-y>0)
D. (x-y==0)
解析:条件表达式:x=表达式17表达式2:表达式3的含义是:先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。在本题中与表达式1:(x-y)等价的是(x-y<0||x-y>0)。
9.线性表常采用的两种存储结构是( )。(C)
A. 散列方法和索引方式
B. 链表存储结构和数组
C. 顺序存储结构和链式存储结构
D. 线性存储结构和非线性存储结构
解析:线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。
10.下列工具中,不属于结构化分析的常用工具的是( )。(D)
A. 数据流图
B. 数据字典
C. 判定树
D. N—S图
解析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。
11.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
12.若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是( )。(D)
A. ++i;
本文档预览:3600字符,共16853字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载