《2010年上半年C语言试题》由会员分享,可在线阅读,更多相关《2010年上半年C语言试题(22页珍藏版)》请在金锄头文库上搜索。
1、1.在学生管理的关系数据库中,存取一个学生信息的数据单位是_。A、文件B、数据库C、字段D、记录实体是概念世界中的基本单位,属性附属于实体,它本身并不构成独立单位。属性有属性域,每个实体可取属性域内的值。一个实体的所有属性取值组成了一个值集叫元组(或称记录)。在概念世界中,可以用元组表示实体,也可用它区别不同的实体。所以在学生管理的关系数据库中,存取一个学生信息的数据单位是元组(或记录)。故本题答案为 D。2.软件(程序)调试的任务是_。A、诊断和改正程序中的错误B、尽可能多地发现程序中的错误C、发现并改正程序中的所有错误D、确定程序中错误的性质程序调试的任务是诊断和改正程序中的错误。它与软件
2、测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。故本题答案为 A。3.算法的时间复杂度是指_。A、算法的执行时间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的基本运算次数所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度
3、量算法的工作量。故本题答案为 D。4.数据流程图(DFD 图)是_。A、软件概要设计的工具B、软件详细设计的工具C、结构化方法的需求分析工具D、面向对象方法的需求分析工具常见的需求分析方法有: 结构化分析方法和面向对象的分析方法。 结构化分析就是使用数据流图 (DFD) 、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。故本题答案为 C。5.软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于_。A、定义阶段B、开发阶段C、维护阶段D、上述三个阶段软件生命周期可分为软件定义、软件开发及软件运行维护三个阶段。软件开发阶段包括概要设计、详细
4、设计、实现和测试四个活动阶段。故本题答案为 B。6.数据库管理系统中负责数据模式定义的语言是_。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言数据定义语言(DDL):该语言负责数据的模式定义与数据的物理存取构建。数据操纵语言(DML):该语言负责数据的操纵,包括查询及增、删、改等操作。数据控制语言(DCL):该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。故本题答案为 A。7.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是_。A、编辑软件B、操作系统C、教务管理系统D、浏览器软件按功能可以分为:应用软件、系统软件、支
5、撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等,所以选项B属于系统软件。故本题答案为 B。8.下列叙述中正确的是_。A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为D、对长度为n的有序
6、链表进行对分查找,最坏情况下需要的比较次数为对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较次,而顺序查找需要比较n次。二分法查找只适用于顺序存储的有序表, 如果采用链式存储结构, 也只能用顺序查找, 所以选项A是正确的。故本题答案为 A。9. 有两个关系R和T如下:则由关系 R 得到关系 T 的操作是_。A、选择B、投影C、交D、并从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。由图可知关系R通过运算得到关系T,关系T与关系R相比,属性的个数没有发生变化,记录的条数发生了变化。因此所使用的运算应该是选择。故本题答案为 A。10.数据库
7、设计中, 用 E-R 图来描述信息结构但不涉及信息在计算机中的表示, 它属于数据库设计的_。A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的工具。故本题答案为 C。11. 若有以下定义和语句char s110=“abcd!“,*s2=“n123“;printf(“%d%dn“,strlen(s1),strlen(s2);则输出结果是_。A、55B、105C、107D、58本题的考查点是转义字符和字符串的统计。char s110=“abcd!“是直接用字符串给一维
8、字符数组赋初值,系统会自动在最后加入0,本题中*s2=“n123“是指把字符串在内存中所占的首地址赋予了char类型的指针变量s2, 使指针变量s2指向该字符串。字符串“n123“中,转义字符“n“代表换行,“代表反斜杠字符“,因此字符串“n123“中共有5个字符。strlen(s)是计算出以s为起始地址的字符串的长度,并作为函数值返回,这一长度不包括串尾的结束标志0。故本题答案为 A。12. 以下选项中与 if(a=1)a=b;else a+;语句功能不同的 switch 语句是_。A、switch(a) case 1:a=b;break; default : a+; B、switch(a=
9、1) case 0:a=b;break; case 1:a+; C、switch(a) default:a+;break; case 1:a=b; D、switch(a=1) case 1:a=b;break; case 0:a+; 本题的考查点是C语言if语句和switch语句。执行if-else语句时,首先计算紧跟在if后面一对圆括号内表达式的值。如果表达式的值为非0,执行if子句,然后跳过else语句,去执行if语句之后的下一条语句;如果表达式的值为0,跳过if子句,去执行else子句,执行完之后接着去执行if语句之后的下一条。if(a=1)a=b;else a+;语句的功能是如果a的值
10、等于1,则把b的值赋给a,否则a的值自增1。当执行switch语句时,首先计算紧跟其后一对括号中的表达式的值,然后在switch语句体内寻找与该值吻合的case标号。如果有与该值相等的标号,则执行该标号后开始的各语句, 包括在其后的所有case和default中的语句, switch语句体结束; 如果没有与该值相等的标号,并且存在default标号,则从default标号后的语句开始执行,直到switch语句体结束;如果没有与该值相等的标号, 同时又没有default标号, 则跳过switch语句体, 去执行switch语句之后的语句。 每当执行到break语句时,立即跳出switch语句体。
11、选项A,C,D的功能与题目中if语句的功能一致,而选项B的功能是如果a的值等于1,则a的值自增1,否则把b的值赋给a。所以选项B语句功能不同。故本题答案为 B。13. 有以下程序#include#includestruct Aint a;char b10;double c;void f(struct A t);main()struct A a=1001,“ZhangDa“,1098.0;f(a);printf(“%d,%s,%6.1fn“,a.a,a.b,a.c);void f(struct A t)t.a=1002;strcpy(t.b,“ChangRong“);t.c=1202.0;程序运
12、行后的输出结果是_。A、1001,ZhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0本题的考查点是函数之间结构体变量的数据传递。在主函数中调用函数f时,将已赋初值的结构体变量a作为实参传递给形参t,因为用结构体变量作实参时,采取的是“值传递“的方式,如果在执行被调用函数期间改变了形参(也就是结构体变量)的值,该值不能返回主调函数, 因此在主调函数main中, 调用完函数f后, 结构体变量a的内容将不发生变化, 所以main函数输出的仍是结构体变量a中各个成员原来的内容。故本题答案为
13、A。14. 有以下程序#include main()int a=1,b=2;for( ;amain()int i,j,m=1;for(i=1;i0;j-)if(i*j3) break;m*=i*j;printf(“m=%dn“,m);程序运行后的输出结果是_。A、m=6B、m=2C、m=4D、m=5本题的考查点是for循环语句和break语句的运用。当break语句出现在循环体中,则在执行break后,跳出本层循环体。本题有双层for循环,当外层循环for(i=1;i0;j-),在内层循环中,当if条件语句成立时执行break语句,跳出本层循环,如果内层循环中if条件语句不成立时,则执行m*=
14、i*j;语句。当内层循环条件不满足,跳出内层循环,直到外层循环条件不满足,执行输出语句,执行过程如下:当i=1,j=3时,判断i*j3不满足,m=1*1*3=3;当i=1,j=2,判断i*j3不满足,m=3*1*2=6;当i=1,j=1,判断i*j3不满足,m=6*1*1;当i=2,j=3,判断i*j3满足,跳出内层for循环;当i=3,j=3,判断i*j3满足,跳出内层for循环;此时执行外层for循环中的i+语句, i的值为4, 接着判断外层for循环的循环条件imain()int a=2,b=2,c=2;printf(“%dn“,a/b程序运行后的输出结果是_。A、0B、1C、2D、3本
15、题的考查点是位运算和算术运算。for(i=0;i#define N 8void fun(int *x,int i)*x=*(x+i);main()int aN=1,2,3,4,5,6,7,8,i;fun(a,2);for(i=0;i#define SUB(a) (a)-(a)main()int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“%dn“,d);程序运行后的输出结果是_。A、0B、-12C、-20D、10本题的考查点是带参数宏定义的运用。C语言中,带参数的宏不是进行简单的字符串替换,还要进行参数替换,所以表达式d=(a+b)-(a+b)*c=(2+3)-(2+
16、3)*5=5-25=-20,所以输出结果为:-20。故本题答案为C。25. 有以下程序#includemain()int a5=1,2,3,4,5,b5=0,2,1,3,0,i,s=0;for(i=0;ivoid fun(char *c,int d)*c=*c+1;d=d+1;printf(“%c,%c,“,*c,d );main()char b=a,a=A;fun( printf(“%c,%cn“,b,a);程序运行后的输出结果是_。A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B本题的考查点是函数形参与实参值的传递。“fun(char *c,int d)“函数的作用是将指针