[计算机类试卷]国家二级(C语言)机试模拟试卷40及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷40及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷40及答案与解析.doc(32页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 40 及答案与解析 一、选择题 1 设数据元素的集合 D= 1,2,3,4,5 ,则满足下列关系 R的数据结构中为线性结构的是 ( A) R= (1,2), (3,4), (5,1) ( B) R= (1,3), (4,1), (3,2), (5,4) ( C) R= (1,2), (2,3), (4,5) ( D) R= (1,3), (2,4), (3,5) 2 下列叙述中正确的是 ( A)链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非 线性结构 ( B)线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针 ( C)线性表的链式
2、存储结构中,每个结点只能有一个指向后件的指针 ( D)线性表的链式存储结构中,叶子结点的指针只能是空 3 一个栈的初始状态为空。现将元素 A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为 ( A) ABC ( B) CBA ( C) EDC ( D) CDE 4 某二叉树的中序序列为 DCBAEFG,后序序列为 DCBGFEA,则该二叉树的深度(根结点在第 1层)为 ( A) 5 ( B) 4 ( C) 3 ( D) 2 5 软件生命周期是指 ( A)软件产品从提出、实现、使用、维护到停止使用退役的过程 (
3、B)软件的需求分析、设计与实现 ( C)软件的开发与管理 ( D)软件的实现和维护 6 某系统结构图如下图所示 该系统结构图的深度是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 7 下面属于应用软件的是 ( A)学生成绩管理系统 ( B) UNIX操作系统 ( C)汇编程序 ( D)编译程序 8 将 E-R图转换为 关系模式时, E-R图中的属性可以表示为 ( A)属性 ( B)键 ( C)关系 ( D)域 9 有两个关系 R与 S如下,由关系 R和 S得到关系 T,则所使用的操作为( A)并 ( B)自然连接 ( C)除法 ( D)交 10 优化数据库系统查询性能的索引设计属于数
4、据库设计的 ( A)需求分析 ( B)概念设计 ( C)逻辑设计 ( D)物理设计 11 结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是 ( A)三种基本结构不可以嵌套使用 ( B)顺序结构是按语句在程序中的先后顺序逐条 执行,没有分支,没有转移 ( C)选择结构是根据不同的条件执行不同分支中的语句 ( D)循环结构是根据条件决定是否重复、重复执行多少次循环体语句 12 以下能正确表述算式 sin(2r+30)的 C语言表达式是 ( A) sin(2*3.14*r+3.14*30/180.0) ( B) sin(2*r+ 30 ) ( C) sin(2*3.14*r+ 30
5、 ) ( D) sin(2*3.14*r+30*3.14/360.0) 13 设有定义: int x=11,y=12,z=0;,以下表达式值不等于 12的是 ( A) (z,x,y) ( B) (z=x,y) ( C) z=(x,y) ( D) z=(x=y) 14 以下可以将任意一个两位整数 n的个位数与十位数对换的表达式为 ( A) (n-n/10*10)*10+n/10 ( B) n-n/10*10+n/10 ( C) n/10+(n-n/10) ( D) (n-n/10)*10+(n/10) 15 设有以下程序段 int y; y=rand() % 30+1; 则变量 y的取值范围是
6、( A) 0y30 ( B) 0 y30 ( C) 1 y 30 ( D) 1 y30 16 以下程序段中,循环次数不超过 10的是 ( A) int i=10; do i=i+1; while(i 0); ( B) int i=5; do i+=1; while(i 0); ( C) int i=1; do i+=2; while(i!=10); ( D) int i=6; do i-=2; while(i!=1); 17 有以下程序 #include stdio.h main() int x; scanf(“%d“, if(x 10) printf(“1“); else if(x 20)
7、printf(“2“); else if(x 30) printf(“3“); 若运行时输入: 35回车,则输出结果是 ( A) 123 ( B) 2 ( C) 3 ( D) 1 18 若要实现 total=1+2+3+4+5求和 ,以下程序段错误的是 ( A) int i=1,total=1; while(i 5) total+=i; i+=1; ( B) int i=1,total=0; while(i =5) total+=i; i+=1; ( C) int i=0,total=0; while(i 5) i+=1; total+=i; ( D) int i=0,total=0; whi
8、le(i =5) total+=i; i+=1; 19 有以下程序 #include stdio.h main() int i=1,k=0; for( ; i 6 ; ) switch(i%3) case 0: k+; case 1: k+; break; case 2: k+; continue; i+=1; printf(“%dn“,k); 程序的运行情况是 ( A)形成无限循环 ( B)输出 6 ( C)输出 5 ( D)输出 4 20 以下不能输出小写字母 a的选项是 ( A) printf(“%cn“,“a“); ( B) printf(“%cn“,A+32); ( C) putch
9、ar(97); ( D) putchar(a); 21 有以下程序段 char c1,c2,c3; scanf(“%c%c%c“, 若要给 c1、 c2、 c3分别输入字母 A、 B、 C,则以下对输入形式的描述正确的是 ( A)字母 A、 B、 C之间可以用空格分隔 ( B)字母 A、 B、 C之间不能有分隔符 ( C)字母 A、 B、 C之间可以用回车符分隔 ( D)字母 A、 B、 C之间可以用 Tab键分隔 22 有以下程序段 scanf(“%d%d%d“, if(a b) a=b; if(a c) a=c; printf(“%dn“,a); 该程序段的功能是 ( A)输出 a、 b、
10、 c中值相等的数值 ( B)输出 a、 b、 c中的最大值 ( C)输出 a、 b、 c中的最小值 ( D)输出 a的原始值 23 以下程序的功能是:通过调用 calc函数,把所求得的两数之和值放入变量 add中,并在主函数中输出。 #include stdio.h void calc(float x,float y, float *sum) _ = x+y; main() float x,y,add; scanf(“%f%f“, calc(x,y, printf(“x+y=%fn“,add); calc函数中下划线处应填入的是 ( A) *sum ( B) sum ( C) int i,j;
11、 for(i=0;i 4; i+) ai0=ai3=#; for(j=1; j 3; j+) a0j=a3j=#; if(i!=0) for(i=1;i 3; i+) for(j=0; j 4;j+) printf(“%2c“,aij); printf(“n“); 程序的运行结果是 ( A) # o o # # o o # ( B) # # # # # o o # ( C) # o o # # # # # ( D) # # # # # # # # 25 设有函数定义: void sub(int k,char ch) 则以下对函数 sub的调用语句中,正确的是 ( A) sub(1,97); (
12、 B) sub(2,97); ( C) n=sub(3,a); ( D) sub(4,“a“); 26 有以下程序 #include stdio.h void fun(int *x,int s,int n) int i; for(i=s; i =n; i-) *(x+i+3) = *(x+i); main() int m=0,1,2,3,4,5,6,7,8,9,k; fun(m,10-4,3); for(k=0; k 10;k+) printf(“%d“,mk); 程序的运行结果是 ( A) 0123456345 ( B) 123453456 ( C) 123456666 ( D) 12345
13、4569 27 设有以下说明和语句: int x34,(*p)4; p=a;,则与表达式 *(*p+2) 等价的选项是 ( A) a02 ( B) *(a+2)0 ( C) (*a+2)0 ( D) a20 28 若有定义语句: int m 3=1,2,3,4,5,6,7;,则与该语句等价的是 ( A) int m 3=1,2,3,4,5,6,7; ( B) int m 3=1,2,3, 4 ,5, 6,7; ( C) int m 3=1,2,3,4,5,6,7; ( D) int m 3=1,2,3,4,5,6,7; 29 以下不能将键盘输入的字符串: This is a string回车读
14、入到 str中的程序段是 ( A) char str80; scanf(“%s“,str) ; ( B) char str80; int i=0; while(stri+=getchar()!=n); stri=0; ( C) char str80; gets(str); ( D) char str80, *ps=str; do scanf(“%c“,ps); while(*ps+ !=n); *(ps)=0; 30 有以下程序 #include stdio.h main() char s10=“verygood“, *ps=s; ps+=4; ps=“nice“; puts(s); 程序的运
15、行结果是 ( A) nice ( B) verynice ( C) nicegood ( D) verygood 31 有以下程序 #include stdio.h int fun(char *s) char *p=s; while( *p != 0) p+; return(p-s); main() char *p=“01234“; printf(“%dn“,fun(p); 程序的运行结果是 ( A) 3 ( B) 6 ( C) 4 ( D) 5 32 有以下程序 #include stdio.h main() int findmax(int,int,int),m; m=findmax(a,b
16、,c); int findmax(int x,int y,int z) 则以下叙述正确的是 ( A)在 main函数中声明了 findmax函 数 ( B)在 main函数中定义了 findmax函数 ( C)在 main函数中两次调用了 findmax函数 ( D)在 main函数内、外重复定义了 findmax函数 33 有以下程序 #include stdio.h void fun(int n) int i; if(i=n/10)!=0) fun(i); putchar( n%10+0); main() fun(256); 程序运行后的输出结果是 ( A) 256 ( B) 652 (
17、C) 2560 ( D) 52 34 有以下程序 #include stdio.h #include stdlib.h void fun(int *p1, int *s) int *t; t=(int *)malloc(2 * sizeof(int); *t=*p1 + *p1+; *(t+1)=*p1+ *p1; s=t; main() int a2=1,2,b2=0; fun(a,b); printf(“%d,%dn“,b0,b1); 程序运行后的输出结果是 ( A) 2,6 ( B) 0,0 ( C) 2,4 ( D) 1,2 35 有以下程序 #include stdio.h #def
18、ine FNA(x) x*x #define FNB(x) x+x main() int a=2,b=4; printf(“%d,%dn“,FNA(FNB(a),FNB(FNA(b); 程序运行后的输出结果是 ( A) 8,16 ( B) 16,32 ( C) 8,32 ( D) 16,16 36 设有如下语句 typedef struct Date int year; int month; int day; DATE; 则以下叙述中错误的是 ( A) DATE是用户定义的结构体变量 ( B) struct Date是用户定义的结构体类型 ( C) DATE是用户说明的新结构体类型名 ( D)
19、 struct是结构体类型的关键字 37 设有如下定义 struct int n; char c; a2,*p=a; 则以下错误引用结构体成员 n的是 ( A) (*a)- n ( B) a0.n ( C) p- n ( D) (*p).n 38 有以 下程序 #include stdio.h #include string.h typedef struct char name10; char sex; int age; STU; void fun(STU t) strcpy(t.name,“Tong“); t.age+; main() STU s2=“Hua“,m,18,“Qin“,f,19
20、; fun(s1); printf(“%s,%d,%s,%dn“,s0.name,s0.age,s1.name ,s1.age ); 程序运行后的输出结果是 ( A) Hua,19,Tong,19 ( B) Hua,18,Tong,20 ( C) Tong,19,Qin,19 ( D) Hua,18,Qin,19 39 设有定义: int a=64,b=8;,则表达式 (a if( (fp=fopen(“test.txt“, “w“) = NULL) printf(“不能打开文件! “); exit(0); else printf(“成功打开文件! “); 若文件 test.txt已存在,则以
21、下叙述正确的是 ( A)程序运行后,文件 test.txt中的原有内容将全部消失 ( B)程序运行时,会因文件存在而出错 ( C)对文件 test.txt进行写操作后,可以随机进行读取 ( D)对文件 test.txt写入的内容总是被添加到文件尾部 二、程序填空题 41 下列给定程序中已建立了一个带头结点的单向链表,在 main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确 的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include(s
22、tdio h #include stdlib h #define N 8 typedef strucfi list int data; struct list: *next; SLIST; void fun(SLIST*P) SLIST*t, *s; t=P一 next; s=P; while(t一 next!=NULL) s=t; /*found*/ t=t一 【 1】 ; /*found*/ printf(“ d”, 【 2】 ), S一 next=NULL; /*found*/ free(【 3】 ); SLIST*creatlist(int*a) SLIST*h, *P, *q; in
23、t i; h=P=(SLIST*)malloc(sizeof (SLIST); for(i=0; i N;i+) q=(SLIST*)malloc(sizeof (SLIST); q一 data=ai; p一 next=q, P=q; P一 next=0: return h; void outlist(SLIST*h) SLIST *P; P=h一 next: if(P=NULL) printf(“ nThe list is NULL! n”); else printf(“ nHead”); doprintf(“一 d”, p一 data); p=p一 next; while(P!=NULL)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 40 答案 解析 DOC
