[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷56及答案与解析.doc(32页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 56及答案与解析 一、选择题 1 设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入队与退队运算后, front=20, rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为 ( A) 5 ( B) 6 ( C) m-5 ( D) m-6 2 某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为 ( A) EFGDCBA ( B) DCBEFGA ( C) BCDGFEA ( D) DCBGFEA 3 下列叙述中正确的是 ( A)在链表中,如果每个结点有两个指针域,则该
2、链表一定是非线性结构 ( B)在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构 ( C)在链表中,如果每个结点有两个指针域,则该链表一定是线性结构 ( D)在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构 4 下列叙述中错误的是 ( A)在带链队列中,队头指针和队尾指针都是在动态变化的 ( B)在带链栈中,栈顶指针和栈底指针都是在动态变化的 ( C)在带链栈中,栈顶指针是在动态变化的, 但栈底指针是不变的 ( D)在带链队列中,队头指针和队尾指针可以指向同一个位置 5 软件生命周期中,确定软件系统要做什么的阶段是 ( A)需求分析 ( B)软件测试
3、 ( C)软件设计 ( D)系统维护 6 下面对软件测试和软件调试有关概念叙述错误的是 ( A)严格执行测试计划,排除测试的随意性 ( B)程序调试通常也称为 Debug ( C)软件测试的目的是发现错误和改正错误 ( D)设计正确的测试用例 7 下面属于系统软件的是 ( A)财务管理系统 ( B)编译软件 ( C)编辑软件 Word ( D)杀毒软件 8 将 E-R图转换为关系模式时, E-R图中的实体和联系都可以表示为 ( A)属性 ( B)键 ( C)关系 ( D)域 9 有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为( A)并 ( B)自然连接 ( C)笛卡尔
4、积 ( D)交 10 在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)面向数据应用系统阶段 11 以下叙述中错误的是 ( A)书写风格良好的程序执行效率高 ( B)书写风格良好的程序易读性好 ( C) C程序可以在一行上写多条语句 ( D) C程序允许将一条语句分写在多行上 12 在 C语言中,以下选项中不能正确表示 101000 之值的是 ( A) 1.0E4.0 ( B) 1.00E+04 ( C) 1.00E+04 ( D) 1.00E+04 13 设有定义: int a=0,b=1,c=1; 以下选
5、项中,表达式值与其它三个不同的是 ( A) b=a=c ( B) a=b=c ( C) a=c=b ( D) c=a!=c 14 设有两行定义语句: int scanf; float case; 则以下叙述正确的是 ( A)两行定义语句都不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)第 2行语句不合法 15 设有定义: double x=2.12;,以下不能完整输出变量 x值的语句是 ( A) printf(“x=%5.0fn“,x); ( B) printf(“x=%fn“,x); ( C) printf(“x=%lfn“,x); ( D) printf(“x=%0
6、.5fn“,x); 16 设有定义: int a,b; float x,y; ,则以下选项中对语句所作的注释叙述错误的是 ( A) scanf(“%d%d%f“, /* 多余的格式符 %f完全不起作用 */ ( B) scanf(“%d%d“, /* 多余的输入项不能获得输入数据 */ ( C) scanf(“%d%f%d“, /* 输入项与格式符类型不匹配,变量 b和 x得不到正确的输入数据 */ ( D) scanf(“Input:%d%d“, /* 格式串中允许加入格式符 以外的字符串 */ 17 有如下程序 #include stdio.h main() int a = 0, b =
7、1; if (+a = b+) printf(“T“); else printf(“F“); printf(“a=%d,b=%dn“, a, b); printf(“n“); 程序运行后的输出结果是 ( A) Ta=0,b=1 ( B) Fa=1,b=2 ( C) Ta=1,b=2 ( D) Fa=0,b=2 18 有如下程序 #include stdio.h main() int i = 1; for (printf(“%d“, i); i 4; i+) printf(“%d“, i); printf(“n“); 程序运行后的输出结果是 ( A) 1123 ( B) 123 ( C) 123
8、 ( D) 1 19 有如下程序 #include stdio.h main() char ch = A; while (ch D) printf(“%d“, ch - A); ch+; printf(“n“); 程序运行后的输出结果是 ( A) ABC ( B) 12 ( C) abc ( D) 123 20 有如下程序 #include stdio.h main() if (0 = 0) putchar(X); if (0 = 0) putchar(Y); if (a b) putchar(Z); printf(“n“); 程序运行后的输出结果是 ( A) X ( B) XYZ ( C)
9、YZ ( D) Y 21 有如下程序 #include stdio.h main() char ch = M; while (ch != K) ch -; putchar(ch); printf(“n“); 程序运行后的输出结果是 ( A) MN ( B) LK ( C) OP ( D) MM 22 有以下程序段 scanf(“%d%d%d“, if(a b) a=b; if(a c) a=c; printf(“%dn“,a); 该程序段的功能是 ( A)输出 a、 b、 c中的最小值 ( B)输出 a、 b、 c中的最大值 ( C)输出 a的原始值 ( D)输出 a、 b、 c中值相等的数值
10、 23 以下关于函数的叙述中正确的是 ( A)函数调用必须传递实参 ( B)函数必须要有形参 ( C)函数必须要 有返回值 ( D)函数形参的类型与返回之的类型无关 24 设有定义: int a,b10,*c=NULL,*p;,则以下语句错误的是 ( A) p=a; ( B) p=b; ( C) p=c; ( D) p= 25 有以下程序 #include stdio.h void fun(int *x,int s,int e) int i,j,t; for(i=s,j=e; i j; i+,j-) t=*(x+i); *(x+i)=*(x+j); *(x+j)=t; main() int m
11、=0,1,2,3,4,5,6,7,8,9,k; fun(m,0,3); fun(m+4,0,5); fun(m,0,9); for(k=0; k 10;k+) printf(“%d“,mk); 程序的运行结果是 ( A) 4567890123 ( B) 3210987654 ( C) 9876543210 ( D) 0987651234 26 设有 n个数按从大到小的顺序存放在数组 x中,以下能使这 n个数在 x数组中的顺序变为从小到大的是 ( A) for(i=0;i n/2;i+) t=xi; xi=xn-i-1; xn-i-1=t; ( B) for(i=0;i n;i+) t=xi;
12、xi=xn-i-1; xn-i-1=t; ( C) for(i=0;i n/2;i+) t=xi; xi=xn-i+1; xn-i+1=t; ( D) for(i=0;i n/2;i+=2) t=xi; xi=xn-i-1; xn-i-1=t; 27 设有一个 M*N的矩阵已经存放在一个 M行 N列的数组 x中,且有以下程序段 sum=0; for(i=0;i M;i+) sum+=xi0+xiN-1; for(j=1;j N-1;j+) sum+=x0j+xM-1j; 以上程序段计算的是 ( A)矩阵两条对角线元素之和 ( B)矩阵所有不靠边元素之和 ( C)矩阵所有元素之和 ( D)矩阵所
13、有靠边元素之和 28 有以下程序 #include stdio.h main() int s32= 1,2,3,4,5,6,*ps3,k; for(k=0;k 3;k+) psk=sk; printf(“%d “,*(psk+1); 程序的运行结果是 ( A) 2 4 6 ( B) 1 3 5 ( C) 1 2 3 ( D) 4 5 6 29 设有以下定义 char s1=“0123“; char s2=0,1,2,3; 则以下叙述正确的是 ( A)数组 s1的长度小于 s2的长度 ( B)数组 s1和 s2的长度相同 ( C)数组 s1的长度大于 s2的长度 ( D)数组 s1和 s2完全等
14、价 30 以下能正确进行字符串赋值的语句组是 ( A) char *ch; ch=“abc“; ( B) char ch =a,b,c; ( C) char ch3=“abc“; ( D) char ch4; ch=“abc“; 31 有以下程序 #include stdio.h int fun(char *s) char *p=s; while( *p+ != 0); return(p-s); main() char *p=“01234“; printf(“%dn“,fun(p); 程序的运行结果是 ( A) 6 ( B) 5 ( C) 4 ( D) 3 32 有以下程序 #include
15、stdio.h main() char *mm4=“abcd“,“1234“,“mnop“,“5678“; char *pm=mm; int i; for(i=0; i 4; i+) printf(“%s“,pmi+i); printf(“n“); 程序的运行结果是 ( A) abcd1234mnop5678 ( B) abcd234op8 ( C) a2o8 ( D) a1m5 33 有以下程序 #include stdio.h void fac2(int ); void fac1(int n) printf(“*“); if(n 0) fac2(n-1); void fac2(int n)
16、 printf(“#“); if(n 0) fac2(-n); main() fac1(3); 程序的运行结果是 ( A) *# ( B) *#* ( C) *# ( D) *#*# 34 有以下程序 #include stdio.h int fun(int n) static int t=1; int i=1; for( ; i =n; i+) t*=i; return t; main() int t=1,i; for(i=2;i 4; i+) t+=fun(i); printf(“%dn“,t); 程序的运行结果是 ( A) 8 ( B) 11 ( C) 15 ( D) 4 35 有以下程
17、序 #include stdio.h #include string.h #include stdlib.h main() char *p1,*p2; p1=p2=(char *)malloc(sizeof(char)*10); strcpy(p1,“malloc“); strcpy(p2,p1+1); printf(“%c%cn“,p10,p20); 程序的运 行结果是 ( A) aa ( B) ma ( C) am ( D) mm 36 设有定义: struct int n; float x; s2,m2=10,2.8,0,0.0; 则以下赋值语句中正确的是 ( A) s0=m1; ( B
18、) s=m; ( C) s.n=m.n; ( D) s2.x=m2.x; 37 有以下程序 #include stdio.h struct S int a; int *b; main() int x1 =3,4,x2 =6,7; struct S x =1,x1,2,x2; printf(“%d,%dn“,*x0.b,*x1.b); 程序的运行结果是 ( A) 1,2 ( B) 3,6 ( C) 4,7 ( D)变量的地址值 38 有以下程序 #include stdio.h #include string.h typedef struct char name10; char sex; int
19、 age; STU; void fun(STU *t) strcpy(*t).name,“Tong“); (*t).age+; main() STU s2=“Hua“,m,18,“Qin“,f,19; fun(s+1); printf(“%s,%d,%s,%dn“,s0.name,s0.age,s1.name ,s1.age ); 程序运行后的输出结果是 ( A) Hua,18,Tong,20 ( B) Hua,18,Qin,19 ( C) Tong,19,Qin,19 ( D) Hua,19,Tong,19 39 以下不属于 C语言位运算符的是 ( A) ! ( B) | ( C) ( D)
20、 40 有以下程序段 FILE *fp; if( (fp=fopen(“test.txt“, “w“) = NULL) printf(“不能打开文件! “); exit(0); else printf(“成功打开文件! “); 若指定文件 test.txt不存在,且无其他异常,则以下叙述错误的是 ( A)输出 “不能打开文件! “ ( B)输出 “成功打开文件! “ ( C)系统将按指定文件名新建文件 ( D)系统将为写操作建立文本文件 二、程序填空题 41 下列给定程序中,函数 fun的功能是进行数字字符转换。若形参 ch中是数字字符 0一 9,则将 0转换成 9, 1转换成 8, 2转换成
21、 7, , 9转换成 0;若足其他宁符 则保持不变;并将转换后的结果作为函数值返回。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h /*found*/ 【 1】 fun(char ch) /*found*/ if(ch =0 【 2】 ) /*found*/ return9一 (ch【 3】 ); return ch; main() char c1, c2; printf(“ nThe result: n”); c1=2; c2=fun(c1); pri
22、ntf(“c1= c c2= c n”, c1, c2), c1=8; c2=fun(c1); printf(“cl= c c2= c n”, c1, c2), c1=a; c2=fun(c1), printf(“c1= C c2= c n”, c1, c2), 三、程序修改题 42 下列给定程序中函数 fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。 例如,若 num1和 num2分别为 49和 21,则输出的最大公约数为 7;若 num1和hUm2分别为 27和 81,则输出的最大公约数为 27。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得
23、增行或删行。也不得更改程序的结构 ! 试题程序: #include stdio h int fun(int a, int b) int r, t; if(a b) /*found*/ t=a, b=a, a=t; r=a b; while(r!=0) a=b, b=r; r=a b, /*found*/ return(a); void main() int num1 , hum2 , a; printf(”Input num1 num2: ”); scanf(” d d”, 四、程序设计题 43 学生的记录由学号和成绩组成, N名学生的数据已放入主函数中的结构体数组s中。请编写函数 fun,其
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 56 答案 解析 DOC
