1、国家二级(C 语言)机试历年真题试卷汇编 15及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误2.支持子程序调用的数据结构是( )。(分数:2.00)A.栈B.树C.队列D.二叉树3.下列叙述中正确的是( )。(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存
2、储结构4.某二又树有 5个度为 2的结点,则该二叉树中的叶子结点数是( )。(分数:2.00)A.10B.8C.6D.45.下列排序方法中,最坏情况下比较次数最少的是( )。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序6.将 ER图转换为关系模式时,实体和联系都可以表示为( )。(分数:2.00)A.属性B.键C.关系D.域7.数据库应用系统中的核心问题是( )。(分数:2.00)A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训8.下面叙述中错误的是( )。(分数:2.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是
3、程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性9.软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。下面各项中属于应用软件的是( )。(分数:2.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序10.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。(分数:2.00)A.提高耦合性、降低内聚性有利于提高模块的独立性B.降低耦合性、提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度11.有两个关系 R,S 如下: (分数:2.
4、00)A.选择B.投影C.插入D.连接12.以下说法中正确的是( )。(分数:2.00)A.C语言程序总是从第一个定义的函数开始执行B.在 C语言程序中,要调用的函数必须在 main()函数中定义C.C语言程序总是从 main()函数开始执行D.C语言程序中的 main()函数必须放在程序的开始部分13.设函数中有整型变量 n,为保证其在未赋值的情况下初值为 0,应选择的存储类别是( )。(分数:2.00)A.autoB.registerC.staticD.auto或 register14.若有以下定义: int x10,*pt=x; 则对 x数组元素的正确引用是( )。(分数:2.00)A.
5、*x10B.*(x+3)C.*(pt+10)D.pt+315.有以下程序: #includestdioh main() int a=5,b=1,t; t=(a2)b; printf(“dn“,t); 程序运行后的输出结果是( )。(分数:2.00)A.21B.11C.6D.116.有以下程序: #includestdioh struct ord int x,y;dt2=1,2,3,4; main() struct ord*p=dt; printf(“d,“,+p 一x); printf(“dn“,+p 一y); 程序运行后的输出结果是( )。(分数:2.00)A.1,2B.2,3C.3,4D.
6、4,117.以下函数按每行 8个输出数组中的数据: void fun(int * w int n) int i; for(i=0;in;i+) _ printf(“d“,wi); printf(“n“); 下画线处应填入的语句是( )。(分数:2.00)A.if(i8= =0)printf(“n“);B.if(i8= =0)continue;C.if(i8= =0)printf(“n“);D.if(i8= =0)continue;18.有以下程序: #includestdioh int b=2: int fun(int*k) b=*k+b; return(b); main() int a10=
7、1,2,3,4,5,6,7,8,i; for(i=2;i4;i+) b=fun( for(i=0;isum;i+) if(i10=0i!=0)*每行输出 10个数* printf(“n“); printf(“5d“,aai); * wf=fopen(“outdat“,“w“); sum=fun(15,aa); for(i=0;isum;i+) if(i10=0 for(i=0;isum;i+) if(i10=0i!=0)*每行输出 10个数* printf(“n“); printf(“5d“,aai); * wf=fopen(“outdat“,“w“); sum=fun(15,aa); for
8、(i=0;isum;i+) if(i10=0&i!=0)*每行输出 10个数* fprintf(wf,“n“); fprintf(wf,“5d“,aai); fclose(wf); * (分数:2.00)_正确答案:(正确答案: int fun(int lim,int aaMAX) int i,j,k=0; for(i=2;i=lim;i+)*求出小于或等于 lim的全部素数* for(j=2;ji;j+) if(ij=0)break; if(j=i) aak+=i;*将求出的素数放入数组 aa中* return k;*返回所求出的素数的个数* )解析:解析:本程序使用 for循环语句查找小于 lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法: for(j=2;ji;j+) if(ij=0)break;