[计算机类试卷]国家二级(C语言)机试模拟试卷27及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷27及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷27及答案与解析.doc(31页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 27及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)程序可以作为算法的一种表达方式 ( B)算法的有穷性是指算法的规模不能太大 ( C)算法的复杂度用于衡量算法的控制结构 ( D)算法的效率与数据的存储结构无关 2 某循环队列的存储空间为 Q(1:m),初始状态为 front=rear=m。现经过一系列的入队操作和退队操作后, front=m-1, rear=m,则该循环队列中的元素个数为 ( A) m-1 ( B) 1 ( C) m ( D) 0 3 能从任意一个结 点开始没有重复地扫描到所有结点的数据结构是 ( A)循环链表 ( B)双向链表 (
2、 C)二叉链表 ( D)有序链表 4 某棵树中共有 25个结点,且只有度为 3的结点和叶子结点,其中叶子结点有 7个,则该树中度为 3的结点数为 ( A)不存在这样的树 ( B) 7 ( C) 8 ( D) 6 5 在最坏情况下,二分查找法的时间复杂度为 ( A) ( B) ( C) log2n ( D) n 6 某二叉树共有 730个结点,其中度为 1的结点有 30个,则叶子结点个数为 ( A)不存在这样的二叉树 ( B) 351 ( C) 1 ( D) 350 7 软件开发中需求分析的主要任务是 ( A)定义和描述目标系统 “做什么 “ ( B)获取需求 ( C)给出软件解决方案 ( D)
3、需求评审 8 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于系统软件的是 ( A)学生成绩管理系统 ( B) ERP系统 ( C)办公自动化系统 ( D) UNIX系统 9 医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是 ( A)多对多 ( B)一对一 ( C)多对一 ( D) 一对多 10 学生选课成绩表的关系模式是 SC(S#,C#,G),其中 S#为学号, C#为课号, G为成绩,检索课号为 2且成绩及格的学生学号的表达式为11 若想定义 int型变量 a,b,c,d并都赋值为 1,以下写法中错误的是 ( A) in
4、t a=b=c=d=1; ( B) int a=1, b=1, c=1, d=1; ( C) int a,b,c,d; a=b=c=d=1; ( D) int a,b,c,d=1; a=b=c=d; 12 若有定义: char c; double d; 程序运 行时输入: 1 2回车,能把字符 1输入给变量 c、数值 2输入给变量 d的输入语句是 ( A) scanf(“%d%lf“, ( B) scanf(“%c%lf“, ( C) scanf(“%c%f“, ( D) scanf(“%d%f“, 13 输出语句: printf(“%dn“,11+011);的输出结果是 ( A) 20 (
5、B) 22 ( C) 22 ( D) 21 14 以下叙述正确的是 ( A)有些算法不能用三种基本结构来表达 ( B) C语言程序不编译也能直接运行 ( C)结构化程序的三种基本结构是循环结构、选择结构、顺序结构 ( D)如果 C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序 15 若有定义 : double x;,则表达式 :x=0,x+10,x+ 的值是 ( A) 11.0 ( B) 10 ( C) 0 ( D) 1 16 有以下程序 #include stdio.h main() int x=1, y=0, a=0, b=0; switch ( x ) case 1:
6、switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d, b=%dn“, a, b); 程序的运行结果是 ( A) a=2, b=2 ( B) a=2, b=1 ( C) a=1, b=1 ( D) a=1, b=0 17 以下程序段中的变量已正确定义 for( i=0; i 4; i+,i+ ) for( k=1; k 3; k+ ); printf(“*“ ); 该程序段的输出结果是 ( A) * ( B) * ( C) * ( D) * 18 有
7、以下程序 #include stdio.h main( ) char c; for (; ( c=getchar() != #; ) if ( c =a putchar(+c); 执行时输入: aBcDefG#回车 , 则输出结果是 ( A) AbCdEFg ( B) ABCDEFG ( C) BCDEFGH ( D) bcdefgh 19 有以下程序 #include stdio.h int f(int x); main() int n=1,m; m=f(f(f(n); printf(“%dn“,m); int f(int x) return x*2; 程序运行后的输出结果是 ( A) 4
8、( B) 2 ( C) 8 ( D) 1 20 关于地址和指针,以下叙述正确的是 ( A)可以通过强制类型转换让 char型指针指向 double型变量 ( B)函数指针 p指向一个同类型的函数 f时,必须写成: p = ( C)指针 p指向一个数组 f时,必须写成: p = ( D)一个指针变量 p可以指向自身 21 有以下程序 #include stdio.h #define N 4 int fun( int aN ) int i,j,x=0; for( i=0; i N; i+ ) for( j=0; j N; j+ ) if ( i = j ) x += aN-1-ji; return
9、 x; main( ) int xNN= 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, y; y = fun(x); printf( “%dn“, y ); 程序运行后的输出结果是 ( A) 34 ( B) 35 ( C) 28 ( D) 59 22 有以下程序 #include stdio.h #define N 3 void fun( int xN, int *r1, int *r2 ) int i, j; *r1 = *r2 =0; for( i=0; i N; i+ ) j=N - (i+1); if (x*r1*r2 x
10、ij) *r1 = i; *r2 = j; main( ) int aNN = 1,5,7,9,2,6,4,3,8 , i,j; fun( a, printf(“%dn“, aij); 程序运行后的输出结果是 ( A) 8 ( B) 6 ( C) 7 ( D) 9 23 对于以下函数声明 void fun(int array4, int *ptr); 以下叙述中正确的是 ( A) array, ptr 都是指针变量 ( B)调用 fun函数时,实参的值将逐一复制给 array ( C)调用 fun函数时, array按值传送, ptr按地址传送 ( D) array 是数组, ptr 是指针,
11、它们的性质不同 24 设有定义: int x10,*p=x,i;,若要为数组 x读入数 据,以下选项正确的是 ( A) for(i=0;i 10;i+) scanf(“%d“,p+i); ( B) for(i=0;i 10;i+) scanf(“%d“,*p+i); ( C) for(i=0;i 10;i+) scanf(“%d“,*(p+i); ( D) for(i=0;i 10;i+) scanf(“%d“,xi); 25 有以下程序 #include stdio.h main() char s=“012xy08s34f4w2“; int i, n=0; for ( i=0; si!=0;
12、 i+ ) if(si = 0 printf(“%dn“,n); 程序运行后的输出结果是 ( A) 7 ( B) 0 ( C) 3 ( D) 8 26 有以下程序段 char str 4 12 =“aaa“,“bbb“,“ccc“,“ddd“ , *p4; int i; for( i=0; i 4; i+ ) pi=stri; 以下选项中不能正确引用字符串的是 ( A) *p3 ( B) p3 ( C) str2 ( D) *p 27 有以下程序 #include stdio.h int mul(int val) static int init = 1; return init *= val;
13、 main( ) int i; for (i=1; i =5; i+) printf(“%d,“, mul(i); 程序运行后的输出结果是 ( A) 1,2,6,24,120, ( B) 1,2,3,4,5, ( C) 1,1,1,1,1, ( D) 1,2,4,6,8, 28 有以下程序 #include stdio.h void fun( int n ) static int k=0; if(n 0) printf(“-“); n=-n; k+=n%10; printf(“%d,“,k); if(n/10) fun(n/10); main( ) int x=-12; fun(x); pri
14、ntf(“n“); 程序运行后的输出结果是 ( A) -2,3 ( B) -1,-2, ( C) -2,-3, ( D) -2,1 29 有以下程序 #include stdio.h struct Sint n; int a20; ; void f(struct S *p) int i,j, t; for (i=0; i p- n-1; i+) for (j=i+1; j p- n; j+) if (p- ai p- aj) t= p- ai; p- ai = p- aj; p- aj = t; main() int i; struct S s=10, 2,3,1,6,8,7,5,4,10,9
15、; f( for (i=0; i s.n; i+) printf(“%d,“, s.ai); 程序运行后的输出结果是 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 2,3,1,6,8,7,5,4,10,9, ( D) 10,9,8,7,6,1,2,3,4,5, 30 有以下程序 #include stdio.h typedef struct stu char name10; char gender; int score; STU; void f( STU a, STU *b, STU c ) *b = c =a; prin
16、tf( “%s,%c,%d,“, b- name, b- gender, b- score ); printf( “%s,%c,%d,“, c.name, c.gender, c.score ); main( ) STU a=“Zhao“, m, 290, b=“Qian“, f, 350, c=“Sun“, m, 370; f( a, printf( “%s,%c,%d,“, b.name, b.gender, b.score ); printf( “%s,%c,%dn“, c.name, c.gender, c.score ); 程序运行后的输出结果是 ( A) Zhao,m,290,Zh
17、ao,m,290,Zhao,m,290,Sun,m,370 ( B) Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290 ( C) Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370 ( D) Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290 31 有以下程序 #include stdio.h #define SUB( x,y ) (x)*(y) main() int a=3, b=4; printf(“%d n“, SUB( a+, b+ ) ); 程序运行后的输出结果是 ( A) 1
18、5 ( B) 12 ( C) 16 ( D) 20 32 有以下程序 #include stdio.h main() struct cm int x; int y; a2=4,3,2,1 ; printf(“%d n“, a0.y/a0.x*a1.x ); 程序运行后的输出结果是 ( A) 1 ( B) 4 ( C) 0 ( D) 3 33 以下选项中的编译预处理命令行,正确的 是 ( A) #define E 2.38 ( B) #define PI_2 1.56 ( C) #define int INT ( D) #DEFINE TRUE 34 设有以下程序段 struct book fl
19、oat price; char language; char title20; rec, *ptr; ptr = 要求输入字符串给结构体变量 rec的 title成员,错误的输入语句是 ( A) scanf(“%s“, ptr.title); ( B) scanf(“%s“, rec.title); ( C) scanf(“%s“, (*ptr).title); ( D) scanf(“%s“, ptr- title); 35 有以下程序 #include stdio.h #include string.h struct computer char CPU10; ; main( ) struc
20、t computer pc1, pc2; strcpy(pc1.CPU, “3.2G“); strcpy(pc2.CPU, “?“); pc1 = pc2; printf(“%sn“, pc1.CPU); 程序运行后的输出结果是 ( A) ? ( B) 3.2G ( C) ? ( D) ?.2G 36 有以下程序 #include stdio.h main( ) int a = 2, b; b = (a = 1) + 4; printf(“%d,%d“, a, b); 程序运行后的 输出结果是 ( A) 1,5 ( B) 2,4 ( C) 2,6 ( D) 2,5 37 若要建立下图所示的存储
21、结构,以下正确的程序段是( )。( A) char *q,*p,c; p= q= ( B) char *q,*p,c; p= q=*p; ( C) char *q,*p,c; p= *q=p; ( D) char *q,*p,c; q=p; p=*c; 38 有以下程序 #include stdio.h struct tt int x; struct tt *y; s3= 1,0,2,0,3,0; main( ) struct tt *p=s+1; p- y=s; printf(“%d,“,p- x); p=p- y; printf(“%dn“,p- x); 程序运行后的输出结果是 ( A)
22、2,3 ( B) 2,1 ( C) 1,2 ( D) 3,1 39 有以下程序 #include stdio.h main( ) int x=3,y=5; x=xy; y=xy; x=xy; printf( “%d,%dn“, x, y ); 程序运行后的输出结果是 ( A) 3,5 ( B) 5,3 ( C) 35,35 ( D) 8,8 40 有以下程序 #include stdio.h struct tt int x; struct tt *y; s2= 1,0,2,0; main( ) struct tt *p=s; p- y=s; printf(“%d“,+p- x); 程序运行后的
23、输出结果是 ( A) 2 ( B) 0 ( C) 1 ( D) 3 二、程序填空题 41 给定程序中,函数 fun的功能是:计算下式前 n项的和,并作为函数值返回。例如,当形参 n的值为 10时,函数返回一 0 204491。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h double fun(int n) int i, k; double s, t; s=0 ;/*found*/ k=【 1】; for(i=1, i =n;i+)/*found*/ t=【
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 27 答案 解析 DOC
