[计算机类试卷]国家二级(C语言)机试模拟试卷122及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷122及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷122及答案与解析.doc(26页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 122及答案与解析 一、选择题 1 线性表常采用的两种存储结构是 ( )。 ( A)散列方法和索引方式 ( B)链表存储结构和数组 ( C)顺序存储结构和链式存储结构 ( D)线性存储结构和非线性存储结构 2 软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和 ( )。 ( A)阶段性报告 ( B)需求分析 ( C)需求总结 ( D)都不正确 3 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( )。 ( A)需求分析 ( B)详细设计 ( C)软件设计 ( D)概要设计 4 对建立良好的程序设计风
2、格,下面描述正确的是 ( )。 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 5 下列工具中,不属于结构化分析的常用工具的是 ( )。 ( A)数据流图 ( B)数据字典 ( C)判定树 ( D) NS图 6 在软件生产过程中,需求信息的来源是 ( )。 ( A)程序员 ( B)项目经理 ( C)设计人员 ( D)软件用户 7 对关系 S和 R进行集合运算,结果中既包含 S中的所有元组也包含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)积运算 8 设有关
3、键码序列 (Q, G, M, Z, A, N, B, P, X, H, Y, S, T, L, K, E),采用堆排序法进行排序,经过初始建堆后关键码值 B在序列中的序号是 ( )。 ( A) 1 ( B) 3 ( C) 7 ( D) 9 9 数据库的故障恢复一般是由 ( )来执行恢复。 ( A)电脑用户 ( B) 数据库恢复机制 ( C)数据库管理员 ( D)系统普通用户 10 下列选项中,不属于数据模型所描述的内容的是 ( )。 ( A)数据类型 ( B)数据操作 ( C)数据结构 ( D)数据约束 11 程序设计的任务包括 ( )。 ( A)编写程序代码并上机调试 ( B)确定所用数据结
4、构 ( C)确定所用算法 ( D)以上选项均正确 12 下列合法的标识符是 ( )。 ( A) 123 ( B) #256 ( C) a 55 ( D) abhj1_2_3 13 以下程序的运行结果是 ( )。 #include stdio h main() int a=3, b=4, c=8, d=4, m=1, n=3; printf(“ d n“, (m=a b)&(n=c d); ( A) 0 ( B) 1 ( C) 2 ( D) 3 14 以下选项中,能用作数据常量的是 ( )。 ( A) o18 ( B) o11 ( C) 0 8e2 5 ( D) 25L 15 有下列程序: ma
5、in() int m, n, p; scanf(“m= dn= dp= d“, &m, &n, &p); printf(“ d d d n“, m, n, p); 若想从键盘上输入数据,使变量 m中的值为 123, n中的值为 456, p中的值为789,则正确的输入是 ( ) ( A) m=123n=456p=789 ( B) m=123 n=456 p=789 ( C) m=123, n=456, p=789 ( D) 123 456 789 16 以下关于 long、 int和 short类型数据占用内存大小的叙述中正确的是 ( )。 ( A)均占 4个字节 ( B)根据数据的大小来决定
6、所占内存的字节数 ( C)由用户自己定义 ( D)由 C语言编译系统决定 17 有以下程序 #include stdio h main() int k=5, n=0; while(k 0) switch(k) default: break; case 1 : n+=k: case 2 : case 3 : n+=k: k-; printf(“ d n“, n); 程序运行后的输出结果是 ( A) 0 ( B) 4 ( C) 6 ( D) 7 18 有以下程序段 int j; float y; char name50; scanf(“ 2d f s“, &j, &y, name); 当执行上述程
7、序段,从键盘上输入 55566 7777abc后, y的值为 ( )。 ( A) 55566 0 ( B) 566 0 ( C) 7777 0 ( D) 566777 0 19 若变量己正确定义 ,有以下程序段: i=0; do printf(“ d, “, i); while(i+); printf(“ d n“, i); 其输出结果是 ( )。 ( A) 0, 0 ( B) 0, 1 ( C) 1, 1 ( D)程序进入无限循环 20 设有条件表达式: (EXP)?i+; j-,则以下表达式中 (EXP)完全等价的是 ( )。 ( A) (EXP=0) ( B) (EXP!=0) ( C)
8、 (EXP=1) ( D) (EXP!=1) 21 有以下程序 #include stdio h main() int y=9; for(; y 0; y-) if(y 3=0)printf(“ d“, -y); 程序的运行结果是 ( )。 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 22 若要求从键盘读入含有空格字符的字符串,应使用函数 ( )。 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 23 当 a=4, b=5, c=7, d=6时,执行下面一 段程序: if(a b) if(c d)x=1;
9、 else if(a c) if(b c)x=2: else x=3; else x=4: else x=5; 程序执行后, x的值为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 24 在 C语言程序中,以下说法正确的是 ( )。 ( A)函数的定义和函数的调用均不可以嵌套 ( B)函数的定义不可嵌套,但函数的调用可以 嵌套 ( C)函数的定义可以嵌套,但函数的调用不可以嵌套 ( D)函数的定义和函数的调用均可以嵌套 25 以下程序运行后的输出结果是 ( )。 #include stdio h main() void reverse(int a, int n) int b
10、10=10, 9, 8, 7, 6, 5, 4, 3, 2,1; int i, s=0; int i, t; reverse(b, 10); for(i=0; i n 2; i+) for(i=0; i 3; i+)s+=bi; t=ai; ai=an 1 i; an 1 i=t; printf(“ d n“, s); ( A) 27 ( B) 6 ( C) 25 ( D) 30 26 设 y为整型变量, a=6, a的地址为 E2000, b=14, b的地址为 E2001;执行语句 b=&a; ( A) E2000 ( B) E2001 ( C) 6 ( D) 14 27 若有以下程序段:
11、 struct st main() int n; struct st*p; int*m; p=s; ; int a=2, b=3, c=5; struct st s3=(10 1, &a, 102, &c, 103, &b; 则以下表达式中值为 5的是 ( )。 ( A) (*p) m ( B) *(p+1) m ( C) *(p+) n ( D) (p+) (*m) 28 在下列叙述中,错误的是 ( )。 ( A) C语言中,二维数组或多维数组是按行存放的 ( B)赋值表达式 b12=a23是正确的 ( C) char a1; a0=A与 int a1; a0=A等价 ( D)数组名后的方括
12、号内可以为常量表达式,也可以为变量 29 若已包括头文件 stdio h和 string h,运行下而程序的输出结果是( )。 char s110=“12345“, s210=“089“, S3=“67“; strcat(strcpy(s1, s2), s3); puts(s1); ( A) 08967 ( B) 0894567 ( C) 089567 ( D) 089567 30 下列说法正确的是 ( )。 ( A) auto和 register将声明的对象说明为自动存储类对象,这些对象可用在函数中或函数外 ( B)将变量其定义为 static类型,则其初值默认为随机值 ( C) typed
13、ef说明符并不会为对象预留存留空间 ( D)如果一个对象被声明为 register,则对它应用一无运算符 &,意在取得其存储的地址 31 以下有关宏的描述不正确的是 ( )。 ( A)宏定义不做晤法检查 ( B)双引号中出现的宏名不进行替换 ( C)宏名无类型 ( D)宏名必须用大写字母表示 32 以下程序段的输出结果为 ( )。 static char a=“programme“; char *p; p=a; for(p=a; p a+8; p+=2) putchar(*p); ( A) programme ( B) porm ( C)有语法错误 ( D) prog 33 下列关于 C语言数
14、据文件的叙述中正确的是 ( )。 ( A)文件由 ASCII码字符序列组成, C语言只能读写文本文件 ( B)文件由二进制数据序列组成, C语言只能读写二进制文件 ( C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 ( D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 34 已知 char*s,下面正确的语句是 ( )。 ( A) s=“ABCDEF“; ( B) *s=“ABCDEF“; ( C) *s=“ABCDEF“; ( D) *s=A; 35 下列程序的运行结果是 ( )。 #include stdio h void main() void f
15、un(int*s, int*p) int a=2, 3, 4, 5, k, x; static int t=3; for(k=0; k 4; k+) *p=st; fun(a, &x); t-; printf(“ d, ”, x); ( A) 5, 4, 3, 2, ( B) 2, 3, 4, 5, ( C) 2, 2, 2, 2, ( D) 5, 5, 5, 5, 36 以下函数 findmin拟实现在数组中查找最小值并作为函数值返回,但程序中有错导致不能实现预定功能 #define MAX 2147483647 int findmin(int x, int n) int i,min; mi
16、n=MAX; for(i=0; i n; i+) if(min xi) min=xi; return min; 造成错误的原因是 ( )。 ( A)定义语句 int i, min;中 min未赋初值 ( B)赋值语句 min=MAN;中,不应给 min赋 MAX值 ( C)语句 if(min Xi)min=Xi;中判断条件设置错误 ( D)赋值语句 min=MAX;放错了位置 37 以下程序的输出结果是 ( )。 #include stdio h main() struct st p=aa; int x; int*y; *p; printf(“ d n“, +(p x); int dt4=1,
17、 2, 3, 4; struct st aa4=2, &dt0, 3, &dt0, 4, &dt0, 5, &dt0, ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 38 有以下定义和语句: struct students int num; char name20; char c; struct int gradel; int grade2; s; ; struct students w *pw; *pw=w: 下列赋值语句不正确的是 ( )。 ( A) w num=1002; ( B) w gradel=85; ( C) pw num=1002; ( D) w s grade2
18、=85; 39 设有以下语句: char x=3, y=6, z; z=xy 2; 则 z的二进制值是 ( )。 ( A) 00010100 ( B) 00011011 ( C) 00011100 ( D) 00011000 40 有以下程序: #include stdio h main() FILE*pf; char*s1=“China“,*s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以
19、上程序执行后 abc dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 二、程序填空题 41 给定程序中,函数 fun的功能是:计算下式前 n项的和作为函数值返回。例如,当形参 n的值为 10时,函数返回: 0 204491。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! #include stdio h double fun(int n) int i,k; double s,
20、 t; s=0; *found* k=_(1); for(i=1; i =n; i+) *found* t=_(2); s=s+k*(2*i一 1)*(2*i+1) (t*t); *found* k=k*_(3); return s; main() int n= 1: while(n 0) printf(“Please input(n 0): “); scanf(“ d“, &n); printf(“ nThe result is: f n“, fun(n); 三、程序修改题 42 给定程序 MODI1 C中函数 fun的功能是:从整数 1到 55之间,选出能被 3整除、且有一位上的数是 5的
21、那些数,并把这些数放在 b所指的数组中,这些数的个数作为函数值返回。规定,函数中 a1放个位数, a2放十位数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include stdio h int fun(int*b) int k, a1, a2, i=0; for(k=10; k =55; k+) *found* a2=k 10: a1=k a2*10; if(k 3=0&a2=5)(k 3=0&a1=5) bi=k; i+; *found* return k; main() int a100, k, m; m=fun(a
22、); printf(“The result is: n“); for(k=0; k m; k+)printf(“ 4d“, ak); printf(“ n“); 四、程序设计题 43 学生的记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组S中,请编写函数 fun,它的功能是:把分数最低的学生数据放在 b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意:部分源程序在文件 PROG1 C文件中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h #defiDe N 16
23、 typedef struct char num10; int s; STREC; int fun(STREC*a, STREC*b) main() STREC sN=“GA05“, 85, “GA03“, 76), “GA02“, 69, “GA04“,85, “GA01“, 91, “GA07“, 72, “GA08“, 64, “GA06“, 87,“GA015“, 85, “GA013“, 91), “GA012“, 64, “GA014“, 91, “GA011“,91), “GA017“, 64, “GA018“, 64, “GA016“, 72; STREC hN; int i,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 122 答案 解析 DOC
