C语言程序设计期末试卷(高职).docx
米 2020-2021学年辽宁本溪市机电工程学校高二上学期 C语言程序设计期末试卷B(考试时间:120分钟,满分100分)一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确 选项填涂在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A) 一组对象所具有的相似性质B) 一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8) 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体 工作人员、与实体计算机之间的联系是A) 一对一B) 一寸多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是CA)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:D 派订 则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(II)以下关于结构化程序设计的叙述中正确的是DA) 一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是CA)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是AA) C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D) C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a; long b: double x, y;则以下选项中正确的表达式 是BA) a% (int) (x-y)B) a=x!=y;C) (a*y) %bD) y=x+y=x(15)以下选项中能表示合法常量的是BA)整数:1, 200B)实数:C )字符斜杠:二D)字符串:"007"(16)表达式a+=a-=a=9的值是DA) 9B) _9C) 18D) 0(17)若变量已正确定义,在if (W) printf ("dn,k");中,以下不可替代W 的是CA) a<>b+cB) ch=getchar ()C) a=b+cD) a+(18)有以下程序A# include<stdio.h>main ()int a=l, b=0:if (! a) b+;else if (a=0) if (a) b+=2;else b+=3 ;printf (*%dn, b);程序运行后的输出结果是A) 0B) 1C) 2D) 3(19)若有定义语句int(19)若有定义语句int(19)若有定义语句inta, b; double x:则下列选项中没有错误的是AA) switch (x%2) case 0: a+; break; case 1: b+; break; default : a+; b+;) C) switch ( (int) x%2)B) switch ( (int) x/2.0 case 0: a+; break; case 1: b+; break; default : a+; b+;D) switch ( (int) (x) %2)case 0: a+; break;case 0.0: a+; break; 派订 case 1: b+; break; case 1.0: b+; break;default : a+; b+; default : a+; b+;) (20)有以下程序B# include <stdio.h>main ()int a=l, b=2:while (a<6) b+=a: a+=2: b%二 10: )printf ("d, %dn”, a, b);程序运行后的输出结果是A) 5,117,17,116,1(21)有以下程序D# includc<s(dio. h>main ()int y=10;while (y-);printf ("Y=%dn”, Y);程序执行后的输出结果是A) y=0y= -1y=lwhile构成无限循环(22)有以下程序C# include<stdio .h>main ()char s J =,rstuvM:printf*s+2);程序运行后的输出结果是A) tuvB)字符t的ASCII码值C) tD)出错(23)有以下程序Aincludc<stdio.h>include Vstring.h>main ()char x STRING”;x OJ =0; x 1 =,0,; x 2J =,0,;printf ("d %dn”, sizcof (x) , strlcn (x); )程序运行后的输出结果是6 17 00 6 3D) 7 1(24)有以下程序C# include<stdio. h>Int f (int x);main ()int n=l, m;m=f (f (f (n) ) ) ; printf ("dn",m);)int f (int x)return x*2; )程序运行后的输出结果是1A) 248(25)以下程序段完全正确的是D 派订 A) int *p; scanf ("%d",&p);B) int *p; scanf ("%d”,p);C) int k, *p=&k; scanf ("%d",p);D) int k, *p:; *p= &k; scanf ("d”,p);(26)有定义语句:int *p4;以下选项中与此语句等价的是BA) int pI4);B) int *p;C) int * (p4);D) int (*p) 4;(27)下列定义数组的语句中,正确的是AA) int N=10; B) #define N 10int xN;int xN;C) int xO.IO ; D) int x :(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是CA) int a5= ( 0 );B) int b=0,0,0A0;C) int c|2+3;D) int i=5,di; (29)有以下程序C# include<stdio. h>void f (int *p);main ()int a 5 = 1, 2, 3, 4, 5 , *r=a;f (r) ; printf ("dn"; *r):)void f (int *p)p=p+3; printf ("%d, ",*p) : 程序运行后的输出结果是A) 1,4B) 4,4C) 3,1D) 4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)B# include<stdio. h> void fun (ini*a; int n)int i、j、k、t;for (i=0;i<n- 1; l+=2) k=i;for (j=i: j<n: j+=2) if (a j >a (k) k=j: t=a (i: a (i=a k: a (k=t: )main ()int aa 10J = 1、2、3、4、5、6、7 , i;fun (aa、7):for (i=0» i<7; i+) printf ("%d,”,aa i);printf;)程序运行后的输出结果是A) 7,2,5,436,1B) 1,634,5,2,7C) 7,6,543,2,1D) 1,7,3,5,621(31)下列选项中,能够满足“若字符串si等于字符串s2,则执行ST”要求的是D A) if (strcmp (s2,sl) =0) ST;if (sl=s2) ST;if (strcpy (s 1 ,s2) =1) ST;if (sl-s2=0) ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是Awhile (*t=*s) t+;s+; for (i=O;ti=si ;i+);do *t+=*s+; while ( *s);A) for (i=O,j=O;ti+=sj+;);(33)有以下程序(strcat函数用以连接两个字符串)A# includeVstdio. h> 米 # include<string . h> main ()char a 20 ="ABCDOEFG0”, b 口 ="IJK”; strcat (a, b) ; printf ("%sn",a);)程序运行后的输出结果是A) ABCDEOFGOIJKB) ABCDIJKC) IJKD) EFGIJK(34)有以下程序,程序中库函数islower (ch)用以判断ch中的字母是否为小 写字母C# include<stdio. h>#includeVctype. h>void fun (char*p)int i=0; while (p|i)if (pi=,'&& islower (p Fi-1 J ) ) pi-l=pi-l-*a,+*A,;i + + ;) main ()char si 100 ="ab cd EFG! ”: fun (si) : printf ("%sn", si); )程序运行后的输出结果是A) ab cd EFG!B) Ab Cd EFg!C) aB cD EFG!D) ab cd EFg!(35)有以下程序A # include<stdio. h> void fun (int x)if (x/2>l) fun (x/2):printf ("d",x); )main ()fun (7) ; printf ("n"); 程序运行后的输出结果是A) 1 3 77 3 10 7 3D) 3 7(36)有以下程序B# includc<stdio. h>int fun ()static int x=l :x+=l : return x;)main ()int i; s=l ;for (i=l ; i<=5: i+) s+=fun ();printf ("%dn",s):)程序运行后的输出结果是1121A) 6120(37)有以下程序Ainctude<stdio. h># includeVstdlib. h>Main ()int *a» *b» * c:a=b=c= (int* ) malloc (sizeof (int);a=I;火 b=2, *c=3; 派订 派订 a=b:prinlf ("%d, %d, %dn”,*a, *b, *c); )程序运行后的输出结果是A) 3,3,3 B) 2,2,3 C) 1,2,3 D) 1,1,3(38)有以下程序Dtf include<stdio. h> main ()int s, t, A=10: double B=6;s=sizeof (A) ; t=sizeof (B); printf ("d, %dn”,s, t); )在VC6平台上编译运行,程序运行后的输出结果是A) 2,4 B) 4,4 C) 4,8 D) 10,6(39)若有以下语句CTypedef struct Sint g; char h; T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C) S是struct类型的变量D) T是struct S类型的变量(40)有以下程序C# includeVsidio. h> main ()short c=124;c=c;printf ("dn”、C): )若要使程序的运行结果为248,应在下划线处填入的是A) »2 B) |248 C) &0248 D) «1二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得 分。(1) 一个栈的初始状态为空。首先将元素5,4,321依次入校,然后退栈一次,再 将元素A,BC,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退 栈的元素)的顺序为【1】(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。(3) 一棵二叉树有10个度为I的结点,7个度为2的结点,则该二叉树共有 【3】个结点。(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是【4】程序。(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计【5】o(6)以下程序运行后的输出结果是6】。# include<stdio. h>main ()int a=200, b=010;printf ("%d%dn”, a, b);)(7)有以下程序# includeVstdio. h>main ()int x,Y;scanf ("2d%kT, &x, &y) ; printf ("dn”, x+y);)程序运行时输入:1234567程序的运行结果是【7】。(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表 示逻辑值“真”。(9)有以下程序# include<stdio. h>main ()(int i,n=(),0,0,0,0);for (i=l; i<=4;i+) 米 ni=ni-l*3+l; printf (n%d u,ni) : )程序运行后的输出结果是【9】。(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作 为函数值返回。请填空。(设N已定义)int fun (int x N)ini i, k=O:for (i=0: i<N: I+)if (x ireturn x k;(ID有以下程序#include<stdio. h>int*f (int *p, int*q);main ()int m=l, n=2, *r=&m;r=f (r, &n) ; prinif ("dn",*r);)int*f (int *p, int*q)return (*p>*q) ?p: q; 程序运行后的输出结果是ID(12)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作 为函数值返回,请填空。(设M,. N已定义)int fun (int a fN M)int i, j, row=0, col=0;for (i=0; i<N; I+)for (j=0; jif (a i j >a row col ) row=i; col=j; return ( 12):(13)有以下程序# include<stdio. h>main ()in( n2, i, j:for (i=0: i<2: i+) ni=0:for (i=0: i<2; i+)for (j=0; j<2; j+) n j =n ij +l;printf ("dn",n|l);)程序运行后的输出结果是131(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输 出该最大值。请在输出语句中填写代表最大值的输出项。# include<stdio. h>main ()int a (10 , *p,*s:for (p=a: p-a<10; p+) scanfp):for (p=a» s=a: p-a<10: p+) if (*p>*s) S=P:printf (,max=%dn, 14);)(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其 中,请填空。# include <stdio. h>main () 15 *fp;char a 5 = "','2', '3', '4', '5' , i;fp=fopcn ("f . txt“,“w“);for (i=(); i<5: i+) fputc (ai» fp);fclose (fp);)BCBDCCBDDA ACBCD BACBD学号姓名填空题:1、1DCBA2345 2、1 3、254、结构化5、物理设计6、20087、15 8、非09、1 4 13 40 10、i IL 212、arowcol13、314、*s 15、FILE 16、班级参考答案答案:BCDAA DDCCA CBBBD DAACB: 派订 : 派 I