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

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

1、国家二级( C语言)机试模拟试卷 108及答案与解析 一、选择题 1 有以下定义: struct data int i; char c; double d; x; 以下叙述中错误的是 ( )。 ( A) x的内存地址与 x i的内存地址相同 ( B) struct data是一个类型名 ( C)初始化时,可以对 x的所有成员同时赋初值 ( D)成员 i、 c和 d占用的是同一个存储空间 2 以下函数的功能是:计算 a的 n次方作为函数值返回。 double fun(double a, int n) int i; double s=1 0; for(i=1; i =n; i+)S=_; retu

2、rn s; 为实现上述功能,函数中下划线处应填入的是 ( )。 ( A) S*i ( B) S*a ( C) s+i*i ( D) S+a*a 3 有以下程序: #include #include main() char str=“Hello, Beijing“; printf(“ d, d n“, strlen(str), sizeof(str); 程序的运行结果是 ( )。 ( A) 13, 13 ( B) 13, 14 ( C) 13, 15 ( D) 14, 15 4 若有说明: typedef structint a; char c; w;,则以下叙述正确的是 ( )。 ( A)编译

3、后系统为 w分配 5个字节 ( B)编译后系统为 w分配 6个字节 ( C)编译后系统为 w分配 8个字节 ( D)编译后系统不为 w分配存储空间 5 以下叙述中错误的是 ( )。 ( A)同 一个数组中所有元素的类型相同 ( B)不可以跳过前面的数组元素,给后面的元素赋初值 0 ( C)定义语句: int a10=0;,给 a数组中所有元素赋初值 0 ( D)若有定义语句: int a4=1, 2, 3, 4, 5;,编译时将忽略多余的初值 6 若有以下定义: struct ttchar name10; char sex; aa=“aaaa“, F, *P=&aa; 则错误的语句是 ( )。

4、 ( A) scanf(“ e“, aa sex); ( B) aa sex=getchar(); ( C) printf(“ c n“, (*p) sex); ( D) printf(“ c n“, P- sex); 7 C语言编译程序的功能是 ( )。 ( A)执行一个 C语言编写的源程序 ( B)把 C源程序翻译成 ASCII码 ( C)把 C源程序翻译成机器代码 ( D)把 C源程序与系统提供的库函数组合成一个二进制执行文件 8 有以下程序: #include int fun(int n) if(n)return fun(n 1)+n; else return 0; main() pr

5、intf(“ d n“, fun(3); 程序的运行结果是 ( )。 ( A) 4 ( B) 5 ( C) 6 ( D) 7 9 有以下程序: #include main() int sum=0, x=5; d0sum+=x; while(! -x); printf(“ d n“, sum); 程序的运行结果是 ( )。 ( A) 0 ( B) 5 ( C) 14 ( D) 15 10 下面不属于软件设计阶段任务的是 ( )。 ( A)软件的功能确定 ( B)软件的总体结构设计 ( C)软件的数据设计 ( D)软件的过程设计 11 有以下程序: #include #include typede

6、f struetchar name9; char sex; float score2; STU; void f(STU*a) strcpy(a- name, “Zhao“); a- sex=m; a- score1=90 0; main() STU c=“Qian“, f, 95 0, 92 0, *d=&c; f(d); printf(“ s, c, 2 O f, 2 O f n“, d- name, c sex,c score0, c score1); 程序的运行结果是 ( )。 ( A) Qian, f, 95, 92 ( B) Zhao, f, 95, 90 ( C) Zhao, m,

7、 95, 90 ( D) Zhao, f, 95, 92 12 在 C语言程序中,下列说法正确的是 ( )。 ( A)函数的定义可以嵌套,但函数的调用不可以嵌套 ( B)函数的定义不可以嵌套,但函数的调用可以嵌套 ( C)函数的定义和调用均不可以嵌套 ( D)函数的定义和调用均可以嵌套 13 执行以下程序段后, 8的值为 ( )。 int a: 1, 2, 3, 4, 5, 6, 7, 8, 9, S=0, k; for(k=0; k 8; k+=2)s+=*(a+k); ( A) 13 ( B) 16 ( C) 17 ( D) 45 14 有以下程序: #include #define M

8、5 #define f(x, y)x*y+M main() int k; k=f(2, 3)*f(2, 3); printf(“ d n“, k); 程序的运行结果是 ( )。 ( A) 22 ( B) 41 ( C) 100 ( D) 121 15 有以下程序: #include main() char ch=Z; ch=(ch-A+1) 26+A; putchar(ch); 程序的运行结果是 ( )。 ( A) Z ( B) Y ( C) B ( D) A 16 下面属于黑盒测试方法的是 ( )。 ( A)基本路径测试 ( B)等价类划分 ( C)判定覆盖测试 ( D)语句覆盖测试 17

9、有以下程序: #include main() int i, j, k, a=5, b=6; i=(a=b)?+a: -b; j=a+; k=b; printf(“ d, d, d n“, i, j, k); 程序的运行结果是 ( )。 ( A) 7, 6, 5 ( B) 5, 5, 5 ( C) 7, 5, 5 ( D) 5, 6, 5 18 C语言程序中,若函数无返回值,则应该对函数说明的类型是 ( )。 ( A) int ( B) double ( C) char ( D) void 19 有以下程序: #include main() int k, n=0; char c, str=“te

10、ach“; for(k=0; strk; k+) c=strk; switch(k) case 1: case 3: case 5: putchar(c); printf(“ d“, +n); break; default: putchar(N); 序的运行结果是 ( )。 ( A) Ne1NN ( B) e1a2e3 ( C) Ne1Nc2N ( D) Na1NNNN 20 有以下程序: #include void fun(char(*p)6) int i; for(i=0; i 4; i+)printf(“ c“, Pii); printf(“ n“); main() char s66=“

11、ABCDE“, “abcde“, “12345“, “FGHIJ“, “fghij“, “54321“; fun(s); 程序的运行结果是 ( )。 ( A) Aa1F ( B) Ab3I ( C) ABCD ( D) fghij 21 设变量 x为 long int型并已正确赋值,以下表达式中能将 x的百位上的数字提取出的是 ( )。 ( A) x 10 100 ( B) x 10 100 ( C) x 100 10 ( D) x 100 10 22 在 E-R图中,表示实体的图形是 ( )。 ( A)矩形 ( B)椭圆 ( C)菱形 ( D)圆 23 下面对软件特点描述不正确的是 ( )。

12、 ( A)软件是一种逻辑实体,具有抽象性 ( B)软件开发、运行对计 算机系统具有依赖性 ( C)软件开发涉及软件知识产权、法律及心理等社会因素 ( D)软件运行存在磨损和老化问题 24 设 x, y, z均为实型变量,代数式 在 C语言中的正确写法是 ( )。 ( A) x y*z ( B) x y z ( C) x y z ( D) x*z y 25 有以下程序: #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aiN-1-i; main() int xNN=1, 2, 3, 4, 5, 6,

13、7, 8, 9, 10, 11, 12, 13, 14, 15, 16,YN, i; fun(x, y); for(i=0; i N; i+)printf(“ d, “, yi); printf(“ n“); 程序的运行结果是 ( )。 ( A) 1, 2, 3, 4, ( B) 3, 6, 9, 12, ( C) 4, 7, 10, 13, ( D) 1, 5, 9, 13, 26 在下 列链表中,能够从任意一个结点出发直接访问到所有结点的是 ( )。 ( A)单链表 ( B)循环链表 ( C)双向链表 ( D)二叉链表 27 有以下程序: #include main() int i, j,

14、 x=0; for(i=0; i 2; i+) x+; for(j=0; j =3; j+) if(j 2=0)continue; x+; x+: printf(“x= d n“, x); 程序的运行结果是 ( )。 ( A) x=4 ( B) x=6 ( C) x=8 ( D) x=12 28 对图书进行编目时,图书有如下属性: ISBN书号,书名,作者,出版社,出版日期。能作为关键字的是 ( )。 ( A) ISBN书号 ( B)书名 ( C)作者,出版社 ( D)出版社,出版日期 29 若主函数中有定义语句: int a10, b10, C;,在主函数前定义的 fun函数首部为: voi

15、d fun(int x),则以下选项中错误的调用语句是 ( )。 ( A) fun(b); ( B) fun(&c); ( C) fun(&a3); ( D) fun(b11); 30 构成 C语言程序的三种基本结构是 ( )。 ( A)顺序结构、转移结构、递归结构 ( B)顺序结构、嵌套结构、递归结构 ( C)顺序结构、选择结构、循环结构 ( D)选择结构、循环结构、嵌套结构 31 下列形式中不合法的常量是 ( )。 ( A) 2 E8 ( B) - 28 ( C) -028 ( D) 2e 8 32 下列与栈结构有关联的是 ( )。 ( A)数组的定义域 使用 ( B)操作系统的进程调度

16、( C)函数的递归调用 ( D)选择结构的执行 33 以下不是 C语言字符型或字符串常量的是 ( )。 ( A) Its ( B) 0 ( C) a=0 ( D) 010 34 下列数据结构中,属于非线性结构的是 ( )。 ( A)双向链表 ( B)循环链表 ( C)二叉链表 ( D)循环队列 35 有以下程序: #include main() int k=10; printf(“ 4d, o, x n“, k, k, k); 程序的运行结果是 ( )。 (口代表一个空格 ) ( A) 10, 12, a ( B)口口 10, 012, a ( C) 010, 12, a ( D)口口 10,

17、 12, a 36 数据库管理系统是 ( )。 ( A)操作系统的一部分 ( B)系统软件 ( C)一种编译系统 ( D)一种通信软件系统 37 若有定义: int a=1, b=2, c=3;,则执行表达式 (a=b+c) (+b)后, a, b, c的值依次为 ( )。 ( A) 1, 2, 3 ( B) 5, 3, 2 ( C) 5, 2, 3 ( D) 5, 3, 3 38 有两个关系 R和 T如下: 则由关系 R得到关系 T的操作是 ( )。 ( A)选择 ( B)交 ( C)投影 ( D)并 39 设有: char s5, c;,则调用函数 scanf能正确给 s和 c读入数据的是

18、 ( )。 ( A) scanf(“ s C“, s, c); ( B) scanf(“ d C“, &s, &c); ( C) scanf(“ d C“, s, &c); ( D) scanf(“ s C“, s, &c); 40 若变量已正确定义并赋值,则错误的赋值语句 是 ( )。 ( A) a+=a+1; ( B) a=sizeof(double); ( C) a=d c; ( D) a+1=a; 二、程序填空题 41 请补充 fun函数,该函数的功能是:计算 NN维矩阵元素的方差,结果由函数返回。维数在主函数中输入。例如: 的计算结果是 14 414。求方差的公式为: S= 其中 注

19、意: 请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 【试题源程序】 #include #include #define N 20 double fun(【 1】, int n) int i, j; int k; double s=0 0: double f=0 0; double aver=0 0; double sd=0 0;for(i=0; i N; i+) for(j=0; j N; j+) S+=aij; aver:【 2】; for(i=0; iN; i+) for(j=0; j N; j+) f+=(aij-aver)*(ai

20、j-aver); f =(n*n); sd= 【 3】; return sd; main() int aNN; int n; int i, j; double s; clrscr(); printf(“*Input the dimension of array N* n“); scanf(“ d“, &n); printf(“*The array* n“); for(i=0; i N; i+) for(j=0; j N; j+) aij=rand() 50; while(aij=0) aij=rand() 60; printf(“ 4d“, aij); printf(” n n”); S=fu

21、n(a, n); printf(“*THE RESULT* n“); printf(“ 4 3f n“, s); 三、程序修改题 42 下列给定程序中,函数 fun()的功能是:用选择法对数组中的 n个元素按从小到大的顺序进行排序。 请改正程序中的错误,使它能得到正确结果。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构。 【试题源程序】 #include #define N 20 void fun(int a, int n) int i, j, t, P; for(j=0; j n 1; j+) *found* P=j for(i: j; i n; i+) if(ai

22、ap) *found* P=j; t=ap ap=aj; aj=t; main() int aN=9, 6, 8, 3, 1, i, m=5; printf(“排序前的数据: “); for(i=0; i m; i+) printf(“ d“, ai); printf(“ n“); fun(a, m); printf(“排序后的数据: “); for(i=0; i m; i+) printf(“ d“, ai); printf(“ n“); 四、程序设计题 43 编写函数 fun,它的功能是:求小于形参 n同 时能被 3与 7整除的所有自然数之和的平方根,并作为函数值返回。例如,若 n为 10

23、00时,程序输出应为:S=153 909064。 注意: 部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 【试题源程序】 #include #include double fun(int n) main() *主函数 * void NONO(); printf(“s= f n“, fun(1000); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp *wf; int i, n; double s; fp=fopen(“in dat“

24、, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 10; i+) fscanf(fp, “ d“, &n); s=fun(n); fprintf(wf, “ f n“, s); fclose(fp); fclose(wf); 国家二级( C语言)机试模拟试卷 108答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 变量 i、 c、 d是结构体变量 x中三个不同的成员,占用不同的存储空间。 2 【正确答案】 B 【试题解析】 s为 a的 (i 1)次方的结果,所以令 s=s*a即可得到 a的 i次方。 3 【正确答案】 B 【试题解析】 strl

25、en返回字符串的长度,不包含字符串末尾的结束字符 0,结果为 13; sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个 0,所以结果为 13+1=14。 4 【正确答案】 D 【试题解析】 w是一个自定义类型,不是变量,故编译后系统不为 w分配存储空间。当 w定义为结构体变量时才会为其分配存储空间。 5 【正确答案】 D 【试题解析】 数组初始化时,若赋初值的个数多于所定义数组的元素个数时,编译器会报错。 6 【正确答案】 A 【试题解析】 sex是一个 char类型变量,不是地址, A项应为 scanf(“ c“,&aa sex);。 7 【正确答案】 C 【试题解析】 编

26、译程序的功能是将 “高级语言 ”翻译为 “机器语言 ”,将 c语言语句转换成二进制的机器指令。 8 【正确答案】 C 【试题解析】 fun函数是一个递归函数,调用 f(3),参数 n=3,返回 f(31)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。 9 【正确答案】 B 【试题解析】 do-while循环,先执行循环体 sum+=x,则 sum=sum+x=0+5=5,再执行 while中的表达式,结果为 0,退出 循环,所以运行结果是 5。 10 【正确答案】 A 【试题解析】 软件设计阶段的任务包括: 结构设计; 数据设计; 接口设计; 过程设计。软件的功能确定

27、是在需求分析阶段完成的。 11 【正确答案】 C 【试题解析】 f函数调用时,结构体数组名作为实参传给形参指针,结构体指针a指向数组 c的首地址。因此, f可以对数组 c中的元素赋值,故返回主函数之后,数组 c中的成员值已被更新。 main函数中有赋值语句 “*d=&c; “,指针 d指向结构体数组 c的首地址,故 d- name=c name,输出结果为 Zhao, m, 95,90。 12 【正确答案】 B 【试题解析】 函数定义都是在函数外部进行的,函数调用是在函数内部进行的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。 13 【正确答案】 B 【试题解析】 数组 a中的元素为: a

28、0=1, a1=2, , a8=9。 k=0时,s=s+*(a+0)=0+1=1; k=2时, s=1+*(a+2)=1+3=4; k=4时, s=4+5=9; k=6时,s=9+7=16。 14 【正确答案】 B 【试题解析】 宏定义中的函数在调用时只做简 单的替换,不能进行任何修改。所以 k=2*3+5*2*3+5=41。 15 【正确答案】 D 【试题解析】 Z的 ASCII码是 90, A的 ASCII码是 65,所以 ch=(ch-A+1)26+A=26 26+65=65,输出 65对应的字符 A。 16 【正确答案】 B 【试题解析】 等价类划分法是一种典型的、重要的黑盒测试方法,

29、它将程序所有可能的输入数据 (有效的和无效的 )划分成若干个等价类进行测试。基本路径测试、判定覆盖测试和语句覆盖测试都属于白盒测试。 17 【正确答案】 B 【试题解析】 条件表达式 i=(a=b)?+a: -b;中先执行 a=b,值为假,根据三元运算符语法规则,执行 -b,此时 b为 5,赋给 i, i=5; j=a+,将 a=5先赋给j,再进行 a+, j=5, a=6, k=b=5,故最后输出的是 5, 5, 5。 18 【正确答案】 D 【试题解析】 int表示返回值是整型, double表示返回值是双精度型, char表示返回值是字符型, void表示无返回值。 19 【正确答案】

30、C 【试题解析】 程序执行过程: k=0时, c=str0=t,执行 default分支,输出 N;k=1时, c=e,执行 case 1分支,没有 break语句,继续执行 case 3分支,没有break语句,继续执行 case 5分支,输出 e1; k=2时, c=a,输出 N; k=3,c=c,输出 c2; k=4, c=h,输出 N。故程序的输出结果为 Ne1Nc2N。 20 【正确答案】 B 【试题解析】 函数 fun的功能是输出 sii,二维数组的对角线元素,所以程序会输出 s00、 s11、 s22、 s33,即 Ab3I。 21 【正 确答案】 D 【试题解析】 x 100的

31、个位数是 x的百位数上的数字,所以再进行除 10取余运算即可得到该数字。 22 【正确答案】 A 【试题解析】 在 E-R图中,矩形表示实体集,矩形内写该实体集的名字。 23 【正确答案】 D 【试题解析】 与硬件不同,软件在运行、使用期间不存在磨损、老化问题。 24 【正确答案】 C 【试题解析】 运算符 、的结合顺序是从左到右,所以 x先除以 y,再除以 z。 25 【正确答案】 C 【试题解析】 调用 fun函数, yi=xiN 1 i, N=4, x是 4行 4列的二维数组。 i=0时, y0=x04 1=x03=4; i=1时, y1=x14 1 1=x12=7;i=2时, y2=x

32、24 1 2=x21=10; i=3时, y3=x30=13。 26 【正确答案】 B 【试题解析】 线性单链表,必须从头指针开始,才能访问到所有的结点;循环链表的最后一个结点的指针域指向表头结点,所有结点的指针构成了一个环状链,只要指出表中任何一个结点的位置就可以从它出发访问到 表中其他所有的结点;双向链表头结点和尾结点之间没有链接,所以如果从中间结点开始访问无法直接访问到所有结点;二叉链表从除根结点之外的任意一个结点出发无法直接访问到所有结点。 27 【正确答案】 C 【试题解析】 第一次循环: i=0,执行 x+后 x=1,执行内层循环 j=0,由于 j2! =0时才执行 x+,即只有

33、j取 1和 3时,执行 x+,此时 x=1+1+1=3,跳出内层循环,执行下一条 x+, x=4,第二次循环: x=1时,重复上述循环,共执行两次循环,故 x最终结果是 4*2=8。 28 【正确答案】 A 【试题解析】 关键字是指能惟一标识元组的属性或属性集合。书号可以惟一标识一本图书,本题中,书名、作者、出版社、出版日期等字段都不能惟一标识一本图书。 29 【正确答案】 D 【试题解析】 fun函数的形式参数为一个数组,需要实参为一个地址,而 b11是一个整型元素,参数类型不一致,且 b11已经溢出,所以 D项错误。 30 【正确答案】 C 【试题解析】 C语言程序是结构化程序,由三种基本

34、结构组成: 顺序结构; 选择结构; 循环结构。 31 【正确答案】 C 【试题 解析】 0开头表示的是八进制整型常量,八进制数只能用 0 7的数字表示。 32 【正确答案】 C 【试题解析】 函数的递归调用是指函数调用函数本身,直到满足特定条件时终止,然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。 33 【正确答案】 C 【试题解析】 C项是一个赋值表达式。 AB两项是字符串常量, D项是字符常量。 34 【正确答案】 C 【试题解析】 线性结构的特点:除了首结点和尾结点外,每一个结点只有一个前驱结点和一个后继结点。线性表、 栈、队列都是线性结构,循环链表

35、和双向链表是线性表的链式存储结构;带链的栈是栈的链式存储结构。二叉链表是二叉树的链式存储结构,二叉树是非线性结构,所以二叉链表是非线性结构。 35 【正确答案】 D 【试题解析】 4d表示输出占 4个字符的十进制,故先输出 2个空格,然后输出 10; o表示输出八进制,所以输出 10的八进制为 12; x表示输出十六进制,即 a。 36 【正确答案】 B 【试题解析】 系统软件主要包括: 操作系统软件; 各种语言的解释程序和编译程序; 各种服务性程序; 各种数据库管理 系统。 37 【正确答案】 C 【试题解析】 表示或运算,当第一个表达式为真时,第二个表达式不执行。根据运算符的优先级规则,先

36、计算 (a=b+c),将 b+c的值赋值给 a,则 a=5,而右边的括号不会被执行,所以 b=2, c=3。 38 【正确答案】 C 【试题解析】 关系 T是由关系 R的第 1、 3列的元组组成,这是对关系 R进行投影运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。 39 【正确答案】 D 【试题解析】 s5中放的是字符串,故输入的类型应该 是 s;变量 c中放的是字符,故输入的类型是 c。要正确读入数据必须要使用 s和 c的地址,而 s代表就是字符数组的首地址。 40 【正确答案】 D 【试题解析】 赋值号 “=”的左边必须是一个变量名,不可以是表达式。 二、程序填空

37、题 41 【正确答案】 【 1】 int aN 【 2】 s (n*n) 【 3】 sqrt(f) 【试题解析】 根据题目中的方差公式,先要计算矩阵元素的平均值,再求矩阵元素与平均值差的平方的平均值,最后调用库函数求方差。 填空【 1】:根据函数中各变量的使用情况及 实参的类型,这里应该是对二维数组 a的定义,因为二维数组做形参,可以省略第一维的长度,但不能省略第二维的长度,所以此处应填 int aN。 填空【 2】:这里求矩阵元素的平均值,注意元素的个数应该是 n*n。 填空【 3】:此处应该调用库函数 sqrt()求平方根。 三、程序修改题 42 【正确答案】 (1)错误: p=j 正确: p=j; (2)错误: p=j; 正确: p=i; 【试题解析】 本题采用了选择排序法,即在后 N个元素比较的过程中,选择一个最小的元素与后 N个元素中第一个元素交换 ,依此类推。 错误 (1): p=j后面应加分号。 错误 (2):根据选择排序法的逻辑,此处应将 i赋给 p。 四、程序设计题 43 【正确答案】 double fun(int n) double sum=0 0: int i: for(i=21; i =n; i+) if(i 3=0)&(i 7=0)sum+=i;同时能被 3与 7整除 return sqrt(sum);

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

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

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