[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc

上传人:deputyduring120 文档编号:502854 上传时间:2018-11-29 格式:DOC 页数:28 大小:74.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc_第1页
第1页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc_第2页
第2页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc_第3页
第3页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc_第4页
第4页 / 共28页
[计算机类试卷]国家二级(C语言)机试模拟试卷119及答案与解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 119及答案与解析 一、选择题 1 数据结构主要研究的是数据的逻辑结构、数据的运算和 ( )。 ( A)数据的方法 ( B)数据的存储结构 ( C)数据的对象 ( D)数据的逻辑存储 2 棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是 ( )。 ( A) DBACEF ( B) CBEFDA ( C) FDAEBC ( D) DFABEC 3 在数据处理中,其处理的最小单位是 ( )。 ( A)数据 ( B)数据项 ( C)数据结构 ( D)数据元素 4 在数据库系统的内部结构体系中,索引属于 ( )。 ( A)模式

2、 ( B)内模式 ( C)外模式 ( D)概念模式 5 以下 ( )不属于对象的基本特征。 ( A)继承性 ( B)封装性 ( C)分类性 ( D)多态性 6 数据库系统的核心是 ( )。 ( A)数据模型 ( B)软件开发 ( C)数据库设计 ( D)数据库管理系统 7 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( )。 ( A)软件矛盾 ( B)软件 危机 ( C)软件耦合 ( D)软件产生 8 关系模型允许定义 3类数据约束,下列不属于数据约束的是 ( )。 ( A)实体完整性约束 ( B)参照完整性约束 ( C)属性完整性约束 ( D)用户自定义的完整性约束 9

3、 关系表中的每一行记录称为一个 ( )。 ( A)字段 ( B)元组 ( C)属性 ( D)关键码 10 在数据库管理技术的发展中,数据独立性最高的是 ( )。 ( A)人工管理 ( B)文件系统 ( C)数据库系统 ( D)数据模型 11 以下叙述错误的是 ( )。 ( A) C语言区分大小写 ( B) C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改 ( C)整数和实数都能用 C语言准确无误地表示出来 ( D)在 C程序中,正整数可以用十进制、八进制和十六进制的形式来表示 12 有以下程序段: lnt i, n; for( i=0; i void main()

4、 int a=1, b=0; printf(“ d, “, b=(a+)+(a+); printf(“ dn“, a+b); 程序运行后的输出结果是 ( )。 ( A) 4, 6 ( B) 2, 5 ( C) 3, 5 ( D) 2, 6 18 若有代数式 ,(其中 e仅代表自然对数的底数,不是变量),则下列能够正确表示该代 数式的 C语言表达式是 ( )。 ( A) sqrt(abs(nx+ex) ( B) sqrt(fabs(pow(n, x)+pow(x, e) ( C) sqrt(fabs(pow(n, x)+exp(x) ( D) sqrt(fabs(pow(x, n)+exp(x)

5、 19 设有定义: int k=0;,下列选项的 4个表达式中与其他 3个表达式的值不相同的是 ( )。 ( A) k+ ( B) k+=1 ( C) Hk ( D) k+l 20 有下列程序,其中 u表示按无符号整数输出。 main() unsigned int x=0xFFFF; *x的初值为十六进制数 * printf(“ un“, x); 程序运行后的输出结果是 ( )。 ( A)一 1 ( B) 65535 ( C) 32767 ( D) 0xFFFF 21 下面程序的运行结果是 ( )。 for(i=3; i99) s=3; else if(num9) s=2; else s=l;

6、 i=num/100; j=(numi*100)/10; k=(numi*100j*10); switch(s) case 3:printf(“ d d dn“, k, j, i); break; case 2:printf(“ d dn“, k, j); case l:printf(“ dn“, k); ( A) 123 ( B) 1, 2, 3 ( C) 321 ( D) 3, 2, 1 24 有以下程序 #inc1ude #inc1ude struct A int a; char b10; double c; ; structA f(structAt); main() struct A

7、a= 1001, “ZhangDa“, 1098 0); a=f(a); printf(“ d, s, 6 1 fn“, a a, a b, a c); struct Af(struct A t) t a=1002; strcpy(t b, “WangPeng“); t c=1220 0; return t; ) 程序运行后的输出结果是 ( )。 ( A) 1001, ZhangDa, 1098 0 ( B) 1002, ZhangDa, 1220 0 ( C) 1001, WangPeng, 1098 0 ( D) 1002, WangPeng, 1220 0 25 判断 char型变量 c

8、1是否为小写字母的正确表达式为 ( )。 ( A) a=a)&(c1=c1 | (z=a)& (c1m ( B) *(p+)一 m ( C)( *p) m ( D)木 (+p)一 m 29 下列程序的运行结果是 ( )。 #inc1ude void sub(int*s, int*y) static int m=4; *y=s0; m+; void main() int a=1, 2, 3, 4, 5), k; int x; printf(“n“); for(k=0; k int fun(int x, int y) if(x!=y)return(y); else return( x+y)/2);

9、 main() int a=4, b=5, c=6; printf(“ dn“, fun(2*a, fun(b, c); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 6 ( C) 8 ( D) 12 31 C语言中规定,程序中各函数之间 ( )。 ( A)既允许直接递归调用也允许间接递归调用 ( B)不允许直接递归调用也不允许间接递归调用 ( C)允许直接递归调用不允许间接递归调用 ( D)不允许直接递归调用允许间接递归调用 32 以下程序的输出结果是 ( )。 #inc1ude main() int a33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, s=

10、1; for(i=0; i #define X 5+6 main() int a=2, c; C=X*2: printf(“ d“, c); 程 序运行后的输出结果是 ( )。 ( A) 17 ( B) 22 ( C) 16 ( D) 11 34 当用 “#define F 37 5f”定义后,下列叙述正确的是 ( )。 ( A) F是 float型数 ( B) F是 char型数 ( C) F无类型 ( D) F是字符串 35 若有定义语句: int a=3, b=2, c=1;,以下选项中错误的赋值表达式是 ( )。 ( A) a=(b=4)=3; ( B) a=b=c+1; ( C) a

11、=(b=4)+c; ( D) a=1+(b=c=4); 36 以下说法 正确的是 ( )。 ( A)宏定义是 C语句,要在行末加分号 ( B)可以使用 #undefine提前结束宏名的使用 ( C)在进行宏定义时,宏定义不能嵌套 ( D)双引号中出现的宏名也要进行替换 37 下面程序的输出结果是 ( )。 typedefunionlong x1; int y4; char z10; M; M t: main() printf(“ dn“, sizeof(t); ( A) 32 ( B) 26 ( C) 10 ( D) 4 38 以下程序中函数 sort的功能是对 a数组中的数据进行由大到小的排

12、序 void sort(int a, int n) int i, j, t; for(i=0; i #include #define N 8 typedef struct list int data; struct list *next; SLIST; void fun(SLIST *p) SLIST *t, *s; t=pnext; s=p; while (tnext != NULL) t=t 1 ; printf(“ d “, _2_) ; snext=NULL; SLIST *creatlist (int *a) SLIST *h, *p, *q; int i; h=p= (SLIST

13、*) malloc (sizeof (SLIST); cF (SLIST *) malloc (sizeof (SLIST) ); qdata=a i ; pnext=q; p=q; pnext=0; return h; void outlist (SLIST *h) SLIST *p; p=hnext ; if (p=NULL) printf(“nThe list is NULL ! n“) ; else printf (“nHead“) ; do printf (“ d“, pdata) ; p=pnext; while (p ! =NULL) ; printf ( “Endn“) ; m

14、ain () SLIST *head; int aN =11, 12, 15, 18, 19, 22, 25, 29; head=creatlist (a) ; printf (“nOutput from head:n“) ; outlist (head) ; printf ( “nOutput from tail: n“) ; while (headnext != NULL) fun (head) ; printf (“nn“); printf(“nOutput from head again :n“) ; outlist (head) ; 三、程序修改题 42 给定程序 MODI1 C中函

15、数 fun的功能是:逐个比较 p、 q所指两个字符串对应位置中的字符,把 ASCII值大或相等的字符依次存放到 c所指数组中,形成一个新的字符串。 例如,若主函数中 a字符串为: aBCDeFgH,主函数中 b字符串为: ABcd,则 c中的字符串应为: aBcdeFgH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include #include void fun(char *p, char *q, char *c) int k= 1; while (*p != *q ) else c k=*p; k+; main ()

16、 char a 10=“aBCDeFgH“, fun (a, b, c) ; printf (“The string a: “) ; puts (a) ; printf (“The string b:“) ; puts (b) ; printf (“The result: “) ; puts (c) ; 四、程序设计题 43 请编写函数 fun:在形参指针所指的 4个整数中找出最大值和最小值,最大的放在 a中,最小的放在 d中。 注意:部分源程序存在 PROGI C中,请勿改动主函数 maln和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 #include void

17、NONO(); void fun (int *a, int *b, int *c, int *d) main() int a, b, c, d; printf( “请输入 4个整数: “); scanf(“ d d d d“, &a, &b, &c, &d); printf(“原始顺序: d, d, d, dn“, a, b, c, d); fun( a, b, c, d); printf(“处理后: d, d, d, dn”, a, b, c, d); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf;

18、 int i, a, b, C, d; fp=fopen(“in dat“, “r“); wf=fopen (“out dat“, “w“); for (i=0; i99”,所以 “s=3, i=3, j=2, k=1”。因为 s=3,所以执行 case 3输出 k, j, i的值,然后通过 break结束程序。 24 【 正确答案】 D 【试题解析】 在主函数中定义结构体 A的变量 a,并对其赋初值,再调用函数f(a),在函数 f(a)中对结构体变量 a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。 25 【正确答案】 D 【试题解析】 C语言规定,字符常量在程序中要用单引号括起来

19、。首先判断 c1是否为小写字母的主要条件 “c1=a“和 “c1data (3)t 【试题解析】 un函数的功能是输出链表尾部结点中的数据,并释放该结点,使链表缩短。由于链表是单向的,找到链表尾部结点需要利用循环从头结点开始查找,直至找到最后一个,找到之后输出尾部结点的数据,然后删除尾结点。 第一空: fun函数中的循环目的是找到尾结点 “while(tnext !=NULL)“,利用结点变量 s和 t, s指向当前节点, t不断指向下一个结点,因此第一空处应该是“t=next,”。第二空:这里是输出尾结点中的数据,已经利用循环找到了尾结点t, t的数据是 tdata,因此第二空处应该为 “p

20、rintf(” d”, tdata); ”。第三空:输出尾结点数据之后删除尾结点,使用 free,又因为尾结点是 t,因此第三空处应该为 “free(t); ”。 三、程序修改题 42 【正确答案】 (1) int k1改为 int k=0; (2) (* p!=* q)改为 ( *p | *q); 【试题解析】 本题中函数 fun的功能是:逐个比较 p、 q所指两个字符串对应位置中的字符,把 ASCII值大或相等的字符依次存放到 c所指数组中,形成一个新的字符串。 While循环为字符串比较的提供前提条件,然后再比较得到 p、 q两个字符串一一对应的符合条件中可用的一个字符,最终合并得到新的

21、字符串 c。 (1)第一个错误在 fun函数最开始定义的 k的初始值。根据 fun函数的功能我们可以知道这里 k是新字符串 c各字符的位置,然后根据比较结果一一对应新字符串个位置的字符。这里犯了一个明显的错误就是:从字符串的第一个字符比较,得到的第一个字符在字符串中的位置不是 c1而是 c0,所以 k的初始值不是 1,而是 0。所以这里第一个改错是将 1改为 0。 第二个错误在 while循环的条件表达式,我们要知道的是 while循环条件和 if循环条件的区别。 if的条件为开始条件,即符合这条件开始循环,而这里 while的循环条件则是为终止条件,意思是下面括号内的循环进行到不符合 whi

22、le条件语句时终止,所以这里很明显错误,如果是这种条件的只要两个字符串中出现相同的字符即终止,以例子来说就是到第二个字符比较久终止,很明显不符合题意。所以为了完全比较这两个字符串,给出的终止条件应该是到两个字符串都结束,即两个字符串字符都为 “0”时终止,所以终止条件应该为 “*p|*q”。 字符串、 while语句循环。 四、程序设计题 43 【正确答案】 3 void fun(int *a,int *b,int *c,int *d) 4 int t; 5 if(* a* b)t=* a; * a=* b; * b=t; 6 if(* a* c)t=* a; * a=* c; * c=t;

23、7 if(* a* d)t=* a; * a=* d; * d=t; 8 if(* b*c)t=* b; * b=* c; * c=t; 9 if(* b* d)t:* b; * b:* d; * d=t; 10 if(* c* d)t:* c; * c=* d; * d=t; 【试题解析】 本题中的函数功能主要是在形参指针所指的 4个整数中找出最大值和最小值,最大的放在 a中,最小的放在 d中。这个题目类似于排序,但是又不是严格的排序,只要重新排序最大值和最小值的位置即可。所以类似于排序,这一题需要相互比较 4个数字,然后进行位置的调换。基本思路就是比较相邻的两个数字,如果靠近 a的数字比靠

24、近 d的数 字要大,就不用进行交换,如果靠近 a的数字比靠近 d的数字小,就进行交换,这样的话最大的数字就会慢慢交换到 a的位置,然后最小的数字就会慢慢交换到 d的位置。所以根据分析我们就要用到if语句来进行判断和处理,只要经过几轮的 if判断大小然后交换,就能实现题目条件所给出的位置的重置,得到要求的结果。 首先在主函数 main中我们需要的就是四个数字,这四个数字需要手动输入,件程序代码第 1315行,四个数字输入完城后就可以进入 fun函数进行数据处理了。进入到 fun函数中,只要从 a到 d进行比较,按照一开始的规则即可,如果 a大 于b,不变,比较 a与 c,若 a小 b, a与 b交换位置,交换过后 a就大于 b了,这样就进行 a与 c的比较; a与 c的比较同理,这样的循环比较,就能发现,每比较一次,较大的数字就能交换到 a的位置,较小的数字就离 a越来越远,也就是到了 d的位置,这样就完成了题目所给出的要求了,最大的数字放在 a中,最小的数字放在 d中。当新的排序排好后,就可以返回主函数进行输出了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1