计算机二级C语言程序设计样卷试题
一、选择题((1)~(10)、(21)~(40)每题 2 分,(11)~(20)每题 2 分,共 70 分) 下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将 正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A) 源程序要文档化B) 数据说明的次序要规范化 C) 避免滥用 goto 语句D) 模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A) 概要设计与详细设计B) 数据设计与接口设计 C) 软件结构设计与数据设计D) 过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计C)软件维护D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A) 概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和 A) 编码设计B) 测试阶段C)运行阶段D)物理设计 (6)设有如下三个关系表 R A m n S B 1 C 3 A m n T B 1 1 C 3 3 下列操作中正确的是 A)T=R∩SB)T=R∪S C)T=R×SD)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为 A)63B)64C)6D)7 (9)数据库技术的根本目标是要解决数据的 A)存储问题B)共享问题C)安全问题D)保护问题 (10)对下列二叉树 进行中序遍历的结果是 A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG (11)下列叙述中错误的是 A)一个 C 语言程序只能实现一种算法 B)C 程序可以由多个程序文件组成 C)C 程序可以由一个或多个函数组成 D)一个 C 函数可以单独作为一个C 程序文件存在 (12)下列叙述中正确的是 A)每个 C 程序文件中都必须要有一个main()函数 B)在 C 程序中 main()函数的位置是固定的 C)C 程序中所有函数之间都可以相互调用,与函数所在位置无关 D)在 C 程序的函数中不能定义另一个函数 (13)下列定义变量的语句中错误的是 A)int_int;B)doubleint_; harFor;D)floatUS$; (14)若变量 x、y 已正确定义并赋值,以下符合C 语言语法的表达式是 C)c A)++x,y=x--B)x+1=yC)x=x+ 10=x+yD)double(x)/10 (15)以下关于逻辑运算符两侧运算对象的叙述中正确的是 A)只能是整数0 或 1B)只能是整数 0 或非 0 整数 C) 可以是结构体类型的数据D) 可以是任意合法的表 达式 (16)若有定义 intx,y;并已正确给变量赋值,则以下选项中与表达式(x- y)?(x++) : (y++)中的条件表达式(x-y)等价的是 A)(x-y0)B)(x-ya ge); (39)若有以下定义和语句 union data {inti;charc;floatf; } x; inty; 则以下语句正确的是 A)x=10.5;B)x.c=101;C)y= x;D)printf(“%d\n“,x); (40)有以下程序 #include main() { FILE*fp;inti; charch[]=“abcd“,t; fp=(“abc.dat“,“wb+“); for(i=0; ix) ? x : d; printf(“%d\n“,x); } (9)有以下程序,若运行时从键盘输入:18,11,则程序的输出结果 是【9】。 main() {inta,b; printf(“Enter a,b:“);scanf(“%d,%d“, while(a!=b) {while(ab) a -= b; while(ba) b -= a; } printf(“%3d%3d\n“,a,b); } (10)以下程序的功能是:将输入的正整数按逆序输出。 例如:若输入135 则输出 531。请填空。 #include main() { intn,s; printf(“Enter a number : “);scanf(“%d“, printf(“Output:“); do {s=n%10;printf(“%d“,s);【10】;} while(n!=0); printf(“\n“); } (11)以下程序中,函数fun 的功能是计算 x -2x+6,主函数中将调用 fun 函数计 算: y1=(x+8) -2 (x+8)+6 y2=sin (x)-2sin(x)+6 请填空。 #include“math.h“ double fun(doublex){ return (x*x-2*x+6); } main() { doublex,y1,y2; printf(“Enter x:“);scanf(“%lf“, y1=fun(【11】); y2=fun(【12】); printf(“y1=%lf,y2=%lf\n“,y1,y2); } (12)下面程序的功能是:将N 行 N 列二维数组中每一行的元素进行排序,第0 行从小到大排序,第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排 序,例如: 2 2 2 #defineN4 void sort(inta[][N]) { inti, j, k, t; for (i=0; i for (j=0; j for (k=【13】; k /*判断行下标是否为偶数来确定按升序或降序来排序*/ if (【14】? a[i][j]a[i][k]) {t = a[i][j]; a[i][j]=a[i][k]; a[i][k] = t; } } void outarr(inta[N][N]) {„„} main() { intaa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,1 3}}; outarr(aa); /*以矩阵的形式输出二维数组*/ sort(aa); outarr(aa); } (13)下面程序的运行结果是:【15】。 #include int f(inta[],intn) { if(n1) return a[0] + f(a+1, n-1); else return a[0]; } main() { intaa[10]={1,2,3,4,5,6,7,8,9,10}, s; s = f(aa+2,4);printf(“%d\n“, s); }