【计算机类职业资格】二级C语言真题6及答案解析.doc

上传人:syndromehi216 文档编号:1325933 上传时间:2019-10-17 格式:DOC 页数:25 大小:101.50KB
下载 相关 举报
【计算机类职业资格】二级C语言真题6及答案解析.doc_第1页
第1页 / 共25页
【计算机类职业资格】二级C语言真题6及答案解析.doc_第2页
第2页 / 共25页
【计算机类职业资格】二级C语言真题6及答案解析.doc_第3页
第3页 / 共25页
【计算机类职业资格】二级C语言真题6及答案解析.doc_第4页
第4页 / 共25页
【计算机类职业资格】二级C语言真题6及答案解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、二级 C 语言真题 6 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中错误的是_。(分数:1.00)A.算法的时间复杂度与问题规模无关B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关2.设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为_。(分数:1.00)A.190B.20C.19D.903.下列叙述中正确的是_。(分数:1.00)A.带链栈的栈底指针是随栈的操作而动态变化的B.若带链队列的队头指针与队尾指针相同,则队列为空C.若带链队列

2、的队头指针与队尾指针相同,则队列中至少有一个元素D.带链栈的栈底指针是固定的4.设一棵树的度为 3,共有 27 个结点,其中度为 3,2,0 的结点数分别为 4,1,10。该树中度为 1 的结点数为_。(分数:1.00)A.12B.13C.11D.不可能有这样的树5.下面描述中正确的是_。(分数:1.00)A.好的软件设计应是高内聚低耦合B.内聚性和耦合性无关C.内聚性是指多个模块间相互连接的紧密程度D.耦合性是指一个模块内部各部分彼此结合的紧密程度6.某系统总体结构如下图所示 (分数:1.00)A.5B.7C.4D.87.下面属于应用软件的是_。(分数:1.00)A.人事管理系统B.Orac

3、le 数据库管理系统C.C+编译系统D.ios 操作系统8.下面选项中不是关系数据库基本特征的是_。(分数:1.00)A.不同的列应有不同的数据类型B.不同的列应有不同的列名C.与行的次序无关D.与列的次序无关9.工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是_。(分数:1.00)A.多对多B.一对多C.多对一D.一对一10.学生和课程的关系模式定义为 S(S#,Sn,Sd,DC,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课); SC(S#,C#,G)(其属性分别学

4、号、课程号和成绩)。 关系中包含对主属性传递依赖的是_。(分数:1.00)A.S#Sd,SdDcB.S#SdC.S#Sd,(S#,C#)GD.C#P#,(S#,C#)G11.以下叙述中正确的是_。(分数:1.00)A.计算机能直接运行未经编译的 C 语言程序B.循环结构、选择结构、顺序结构是结构化程序的三种基本结构C.复杂算法不能使用 N-S 流程图来描述D.计算机能够直接处理不超过 20 行源码的简单 C 语言程序12.以下说法正确的是_。(分数:1.00)A.C 语言程序运行时可以从键盘上读入用户输入的 C 源程序并附加到本程序的尾部一并执行B.C 语言程序运行时可以从键盘上读入用户以二进

5、制输入的指令,并执行这些指令C.C 语言程序运行时可以从键盘上读入用户输入的 C 源程序并逐行执行D.C 语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤13.若有程序段 char c; double d; scanf(“%lf%c“, 如果想把 2.3 输入给变量 d,字符“f“输入给变量 c,程序运行时正确的输入是_。(分数:1.00)A.2.3 fB.2.3fC.2.3“f“D.2.3“f“14.设 a、b、c 是已定义的整型变量且已正确赋初值,以下赋值语句中,错误的是_。(分数:1.00)A.a=(b=3)=1;B.a=(b=0)+c+0;C.a=b=c+0

6、;D.a=0+(b=c=0);15.若有定义:int a=3;double b=0.1263;char ch=“a“;,则以下选项中,叙述有错的是_。(分数:1.00)A.逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果B.运算符%只能对整数类型的变量进行运算C.语句 ch=(unsigned int)a+b;是对 a 与 b 之和进行强制类型转换,结果赋值给变量 chD.复合运算:a*=b+ch 是将变量 b、ch 之和与 a 相乘,结果再给 a 赋值16.以下可以正确且安全的用作用户标识符的一组选项是_。(分数:1.00)A._32int,long64B.Switch,unsign

7、edC.Abc,getchD.3break,enter17.若有定义:char ch;int a;double d;,当输入为 12345 678910.36 时,以下选项中能给各个变量正确输入数据的是_。(分数:1.00)A.scanf(“%d%c%lf“,B.scanf(“%5d%2c%7.2lf“,C.scanf(“%d%c%lf“,a,ch,d);D.scanf(“5d%2c%7.2lf%“,18.以下选项中,合法的 C 语言实数是_。(分数:1.00)A.3.1e3.1B2e1C.E09D.1.23E19.以下叙述正确的是_。(分数:1.00)A.#includestdio.h是 C

8、 程序的一条语句B.使用符号/可以将一条#include 命令写在多行里C.一个#include 行可以包含多个文件,文件名用逗号分开D.一个#include 行可以包含多个文件,且最后一个文件起作用20.与数学式 (x 2 -y 2 )cos(45) 对应的 C 语言表达式是_。(分数:1.00)A.(pow(x,2)-pow(y,2)*cos(3.1415926*45/180)B.(pow(2,x)-pow(2,y)*cos(3.1415926*45/180)C.(x*x-y*y)*cos(45)D.(x2-y2)*cos(45)21.以下程序拟实现计算 s=1+2*2+3*3+n*n+,

9、直到 s1000 为止。 #includestdio.h main() int s,n; s=1; n=1; do n=n+1;s=s+n*n; while(s1000); printf(“s=%d/n“,s); 程序运行后,不能得到正确结果,以下修改方案正确的是_。(分数:1.00)A.把 n=n+1;改为 n=n*n;B.把 s=1;改为 s=0;C.把 n=1;改为 n=0;D.把 while(s1000);改为 while(s=1000);22.有如下程序 #includestdio.h main() char a,b; int i; a=“3“; b=“A“; for(i=0;i6;

10、i+) if(i%2)putchar(a+i); else putchar(b+i); 程序运行后的输出结果是_。(分数:1.00)A.AB56EFB.A4C6E8C.B4D6F8D.A5C7E923.设有定义:int sum=100,i; 以下选项中,能够实现 sum-=1+2+3+10 的程序段是_。(分数:1.00)A.for(i=0;i=10;)sum=sum-i+;B.i=0;dosum=sum-+i;while(i=10);C.i=0;while(isum=sum-+i;D.i=1;for(;i10;i+)sum=sum-i+;24.有下列程序 #includestdio.h ma

11、in() int a=123456,b; while(a) b=a%10; a/=10; switch(b) default:printf(“%d“,b+); case 1: case 2:printf(“%d“,b+);break; case 3:printf(“%d“,b+);break; case 4:printf(“%d“,b+); 程序执行后的输出结果是_。(分数:1.00)A.76654321B.12345667C.67564321D.65432125.有以下程序 #includestdio.h main() char i,j,n; for(i=“1“;i=“9“;i+) if(i

12、“3“)continue; for(j=“0“;j=“9“;j+) if(j“2“|j=“4“)continue; n=(i-“0“)*10+j-“0“; printf(“%d“,n); if(i=“4“)break; printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.32 33 42 43B.30 31 40 41C.34 35 44 45D.35 36 45 4626.以下叙述中正确的是_。(分数:1.00)A.无论指针变量 p 具有何种基类型,表达式 p=p+1 都代表指针 p 移动一个字节B.指针变量具有基类型,基类型不同的指针变量不能直接相互赋值C.指针变量

13、的赋值操作:p=0;是非法的D.通过指针变量存取某个变量值的方式称为“直接存取”方式27.有以下程序 #includestdio.h void swap(int*a,int*b) int t,*tp; t=*a;*a=*b;*b=t; tp=a;a=b;b=tp; printf(“%d,%d,“,*a,*b); main() int i=3,j=7,*p= swap(p,q); printf(“%d,%d,%d,%d“,i,j,*p,*q); 程序执行后的输出结果是_。(分数:1.00)A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,328

14、.对于函数声明 void fun(float array,int*ptr);以下叙述正确的是_。(分数:1.00)A.函数 fun 的参数 array,ptr 都是指针变量B.函数 fun 的参数 array 是数组名,ptr 是指针变量,它们有本质区别C.调用函数 fun 时,实参数组元素个数可以比形参 array 数组元素个数多D.调用函数 fun 时,传送给形参 array 的应是数组的所有元素29.以下叙述中正确的是_。(分数:1.00)A.“/x41“和“/101“都是转义字符常量B.“/“与“/“都是字符串常量C.“是空的字符串,“是空字符 NULLD.“/n“和“/n“都是回车字

15、符30.以下选项中,能够正确利用随机函数 rand(),产生一个英文字母的表达式是_。(分数:1.00)A.rand()%2=0?rand()%“A“:rand()%“a“B.rand()%26+“A“|rand()%26+“a“C.rand()%26+“A“,则以下叙述中错误的是_。 Aq 是指针变量,*q 就是变量 a Bp 是指针变量,p 指向变量 a c)q 指向变量 p,所以*q 指向变量 a D*p 与*q 都代表变量 a (分数:1.00)A.B.C.D.32.有下列程序 #includestdio.h void f(int x,int n) f(n1) printf(“%d“,

16、xn-1); f(x,n-1); printf(“%d“,xn-1); else printf(“%d“,xn-1); main() int a 4=1,2,3,4; f(a,4); 程序执行后的输出结果是_。(分数:1.00)A.1234321B.43211234C.4321234D.1234432133.有以下不完整函数 int fun(char*p) char*t=p; while(*t+); return(_); 该函数的功能是:计算 p 所指字符串占用内存单元的个数,作为函数值返回。return 语句下划线处应填入的是_。(分数:1.00)A.t-pB.*tC.*t-*pDt34.有

17、下列程序 #includestdio.h #includestring.h main() char v 410=“efg“,“abcd“,“mnopq“,“hijkl“,*p4,*t; int i,j; for(i=0;i4;i+) pi=vi; for(i=0;i3;i+) for(j=i+1;j4;j+) if(strcmp(pi,pi)0) t=pi;pi=pi;pi=t; for(i=0;i4;i+) printf(“%s“,pi); 程序执行后的输出结果是_。(分数:1.00)A.efg abcd hijkl mnopqB.abcd efg hijkl mnopqC.mnopq hi

18、jkl efg abcdD.efg abcd mnopq hijkl35.有以下程序 #includestdio.h #define S1(z)4*z+4*(z) #define s2(x,y)4*(x)*(y)+y*x main() int a=1,b=2; printf(“%d,“,S1(a+b); printf(“%d,“,S2(a,b)+S1(3); printf(“%d“,S2(3+a,b+3); 程序执行后的输出结果是_。(分数:1.00)A.18,34,100B.24,34,92C.24,34,100D.18,34,9236.如图所示:带有头结点的单向链表 head,其三个数据结

19、点 A、B、C 的连接关系见图。 (分数:1.00)A.*(*p).next-next-dtB.p-next-next-dtC.(*(*(*p).next).next).dtD.(*(p-next-next).dt37.设有定义 #includestdio.h #includestdlib.h typedef structint x,y;T; typedef structint x,y;*USER; USER fun() USER p; p=(USER)malloc(sizeof(T); p-x=1; p-y=2; return p; 函数 fun 返回值的类型是_。(分数:1.00)A.T

20、类型的结构体B.指向结构体类型的指针C.int 类型的元素D.int 类型的指针38.有以下宏定义及调用 #define HA 2 #define HB(a)(HA+1)*a x=HA*(HA+HB(2); 则以下判断正确的是_。(分数:1.00)A.宏定义不允许嵌套B.x 的值是 6C.x 的值是 16D.宏调用不允许嵌套39.若以“a+”方式打开一个已存在的文件,以下叙述正确的是_。(分数:1.00)A.文件打开时,原有文件内容不被删除,可以进行添加和读操作B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作C.文件打开时,原有文件内容不被删除,位置指针移到文件

21、中间,可以进行重写和读操作D.文件打开时,原有文件内容被删除,只可进行写操作40.有下列程序 #includestdio.h main() FILE*fp; int i,a6=1,2,3,4,5,6; fp=fopen(“d.dat“,“w+b“); for(i=0;i6;i+) fwrite( rewind(fp); fread( fclose(fp); for(i=0;i6;i+) printf(“%d,“,ai); 程序执行后的输出结果是_。(分数:1.00)A.4,5,6,4,5,6,B.1,2,3,4,5,6,C.4,5,6,1,2,3,D.1,2,3,1,2,3,二、(共 18 分

22、)(总题数:1,分数:18.00)41.函数 fun 的功能是:将一副扑克牌编号为 1,2,3,53,54,以某种特定的方式洗牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为 1 的牌在最上方,如第一次这样洗牌后的结果为:1,28,2,29,53,27,54。两次洗牌后的结果为:1,41,28,15,2,42,53,40,27,14,54。 程序的功能是:输出经过 n 次这样洗牌后的结果。 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #includestdio.h void fun(int

23、a55,int n) int i,k; /*found*/ int 155; for(i=0;in;i+) for(k=1;k=27;k+) b2*k-1=ak; /*found*/ b 2*k=ak+27; for(k=1;k=54;k+) /*found*/ ak= 3; main() int m,a55,i; for(i=1;i55;i+)ai=i; printf(“请输入洗牌次数:“);scanf(“%d“, fun(a,m); for(i=1;i55;i+)printf(“%d,“,ai); printf(“/n“); (分数:18.00)三、(共 18 分)(总题数:1,分数:18

24、.00)42.给定程序 MODI1.C 中,函数 fun 的功能是:判断输入的任何一个正整数 n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。 例如:当输入 100 时,输出:100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 请改正函数 fun 中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdio.h void fun(int n) int j,b,c,m,flag=0; for(b=1;b=n/2;b+) /*fo

25、und*/ n=m; c=b; while(m!=0 for(j=b;jc-1;j+)printf(“%d+“,j); printf(“%d/n“,j); flag=1; if(flag=0) printf(“不能分解/n“); main() int n; printf(“请输入一个整数:“);scanf(“%d“, fun(n); (分数:18.00)_四、(共 24 分)(总题数:1,分数:24.00)43.请编写函数 fun,其功能是:判断 t 所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于 2)。例如字符串:uvwxyz 满足要求;而字符串:uvxwyz 不满足要求。

26、 注意:请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 指定的部位填入所编写的若干语句。试题程序: #includestdio.h #includestring.h void NONO(); int fun(char*t) main() char s26; printf(“请输入一个字母组成的字符串:“);gets(s); if(fun(s)printf(“%s 是由连续字母组成的字符串./n“,s); else printf(“%s 不是由连续字母组成的字符串!/n“,s); NONO(); void NONO() /*本函数用于打开文件,输入数据,调用函数,输出数据,关

27、闭文件。*/ FILE*fp,*wf; int i; char s26,*p; fp=fopen(“in.dat“,“r“); wf=fopen(“out.dat“,“w“); for(i=0;i10;i+) fgets(s,26,fp); p=strchr(s,“/n“); if(p)*p=0; if(fun(s)fprintf(wf,“%s/n“,s+2); else fprintf(wf,“%s/n“,strrev(s); fclose(fp); fclose(wf); (分数:24.00)_二级 C 语言真题 6 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:

28、40,分数:40.00)1.下列叙述中错误的是_。(分数:1.00)A.算法的时间复杂度与问题规模无关 B.算法的时间复杂度与计算机系统无关C.算法的时间复杂度与空间复杂度没有必然的联系D.算法的空间复杂度与算法运行输出结果的数据量无关解析:解析 算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关。算法的空间复杂度指执行这个算法所需要的内存空间。为降低算法的空间复杂度,主要应减少输入数据所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常

29、不可能优于算法的设计。算法执行时所需要的计算机资源越多算法复杂度越高,因此算法的复杂度和问题规模成正比。算法设计时要考虑算法的复杂度,问题规模越大越是如此。 算法的时间复杂度与空间复杂度没有必然的联系。算法的空间复杂度与算法运行输出结果的数据量无关。故本题答案为 A 选项。2.设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为_。(分数:1.00)A.190 B.20C.19D.90解析:解析 对长度为 n 的线性表排序,在最坏情况下,冒泡排序需要比较的次数为 n(n-1)/2。本题中n=20,20(20-1)/2=190。故本题答案为 A 选项。3.下列叙述中正确的是_。(分数:1.0

30、0)A.带链栈的栈底指针是随栈的操作而动态变化的 B.若带链队列的队头指针与队尾指针相同,则队列为空C.若带链队列的队头指针与队尾指针相同,则队列中至少有一个元素D.带链栈的栈底指针是固定的解析:解析 由于带链栈利用的是计算机存储空间中的所有空闲存储结点,因此随栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则首尾指针相同。故本题答案为 A 选项。4.设一棵树的度为 3,共有 27 个结点,其中度为 3,2,0 的结点数分别为 4,1,10。该树中度为 1 的结点数为_。(分数:1.00)A.12 B.13C.11D.不可能有这样的树解析:解析 在树结构中,一个结点所拥有的后件个数称

31、为该结点的度,所有结点中最大的度称为树的度。 根据题意,度为 3 的树第 1 层 1 个根结点,第 2 层 3 个子结点,每个子结点下各 3 个子结点,所以第 3 层共 9 个子结点,前 3 层共 13 个结点。第 3 层有一个结点度为 2 即有 2 个子结点,本层其他结点各 1 个子结点;即第 4 层共 10 个结点。前 4 层共 23 个结点。第 4 层中的两个结点下各有一个子结点,即第 5 层有2 个结点,此 2 个结点下各有一个子结点。 第 3 层有 8 个度为 1 的结点,第 4 层有 2 个度为 1 的结点,第 5 层有 2 个度为 1 的结点,8+2+2=12。故本题答案为 A

32、选项。5.下面描述中正确的是_。(分数:1.00)A.好的软件设计应是高内聚低耦合 B.内聚性和耦合性无关C.内聚性是指多个模块间相互连接的紧密程度D.耦合性是指一个模块内部各部分彼此结合的紧密程度解析:解析 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为 A 选项。6.某系统总体结构如下图所示 (分数:1.00)A.5 B.7C.4D.8解析:解析 模块的扇出是指本模块的直属下

33、层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇入是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为 3,功能 2 模块扇出数为 3,功能 3 模块扇出数为 2,功能 22 扇出数目为 2,故最大扇出数为 3。功能 2.2.2 有 2 个上级模块调用,为最大扇入数。3+2=5。故本题答案为 A 选项。7.下面属于应用软件的是_。(分数:1.00)A.人事管理系统 B.Oracle 数据库管理系统C.C+编译系统D.ios 操作系统解析:解析 系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,包括各种系统开发、维护工具软件。应用软件是为了应用

34、于特定的领域而开发的软件。人事管理系统属于应用软件。Oraele 数据库管理系统、C+编译系统、ios 操作系统是系统软件。故本题答案为 A 选项。8.下面选项中不是关系数据库基本特征的是_。(分数:1.00)A.不同的列应有不同的数据类型 B.不同的列应有不同的列名C.与行的次序无关D.与列的次序无关解析:解析 在关系数据库中,二维表由行数据组成,每行数据包含若干属性值,每个属性都有指定的类型和取值范围。数据行数是有限的,每行数据互不相同(元组唯一性),每行的次序可以任意交换(元组的次序无关性);表中属性名(列各)各不相同即字段名不重复,属性名(列名)次序可任意交换。故本题答案为 A 选项。

35、9.工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是_。(分数:1.00)A.多对多 B.一对多C.多对一D.一对一解析:解析 零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为 A 选项。10.学生和课程的关系模式定义为 S(S#,Sn,Sd,DC,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课); SC(S#,C#,G)(其属性分别学号、课程号和成绩)。 关系中包含对主属性传递依赖的是_。(分数:1.00)A.S#S

36、d,SdDc B.S#SdC.S#Sd,(S#,C#)GD.C#P#,(S#,C#)G解析:解析 设 X、Y、Z 是关系 R 中互不相同的属性集合,存在 XY(Y!X),YZ,则称 Z 传递函数依赖于 X。在关系 S 中 S#Sd,SdDc,则 Dc 传递函数依赖于 S#。故本题答案为 A 选项。11.以下叙述中正确的是_。(分数:1.00)A.计算机能直接运行未经编译的 C 语言程序B.循环结构、选择结构、顺序结构是结构化程序的三种基本结构 C.复杂算法不能使用 N-S 流程图来描述D.计算机能够直接处理不超过 20 行源码的简单 C 语言程序解析:解析 任何 C 语言程序,无论简单或复杂,

37、都必须经过编译、链接生成可执行文件才能由计算机运行,选项 A、D 错误;结构化程序的三种基本结构是顺序结构、选择结构和循环结构,选项 B 正确;N-S流程图是描述算法的很好的工具,复杂的算法也是可以描述的,选项 C 错误;本题答案为 B。12.以下说法正确的是_。(分数:1.00)A.C 语言程序运行时可以从键盘上读入用户输入的 C 源程序并附加到本程序的尾部一并执行B.C 语言程序运行时可以从键盘上读入用户以二进制输入的指令,并执行这些指令C.C 语言程序运行时可以从键盘上读入用户输入的 C 源程序并逐行执行D.C 语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤

38、 解析:解析 C 语言运行前,需要将 C 程序编译、链接,生成可执行程序文件,在运行可执行文件时,只能从键盘读入用户输入的字符或数据,依据程序的逻辑,来改变程序运行的步骤,选项 D 正确;不能从键盘读入 C 源程序并附加到本程序的尾部一并执行,选项 A 错误;也不能直接读入二进制指令并执行,选项 B 错误;也不能读入 C 源程序并逐行运行,选项 C 错误,本题答案为 D。13.若有程序段 char c; double d; scanf(“%lf%c“, 如果想把 2.3 输入给变量 d,字符“f“输入给变量 c,程序运行时正确的输入是_。(分数:1.00)A.2.3 fB.2.3f C.2.3

39、“f“D.2.3“f“解析:解析 由于变量 C 是字符变量,所以选项 A 中的空格会赋给变量 c,丢弃 f;选项 C 会将单引号“”赋给变量 c,丢弃 f;选项 D 会将空格赋给变量 c,丢弃单引号“”和 f;本题答案为 B。14.设 a、b、c 是已定义的整型变量且已正确赋初值,以下赋值语句中,错误的是_。(分数:1.00)A.a=(b=3)=1; B.a=(b=0)+c+0;C.a=b=c+0;D.a=0+(b=c=0);解析:解析 C 语言中赋值运算符具有右结合性,且括号内的表达式优先级最高,所以选项 A 中首先运算 b=3,将 3 赋给 b,表达式的值为 3,然后再将 1 赋给 3,这

40、种逻辑是错误的,3 是常量,不能被赋值,本题答案为 A。15.若有定义:int a=3;double b=0.1263;char ch=“a“;,则以下选项中,叙述有错的是_。(分数:1.00)A.逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果B.运算符%只能对整数类型的变量进行运算C.语句 ch=(unsigned int)a+b;是对 a 与 b 之和进行强制类型转换,结果赋值给变量 ch D.复合运算:a*=b+ch 是将变量 b、ch 之和与 a 相乘,结果再给 a 赋值解析:解析 逗号表达式的计算结果是最后一个逗号之后的表达式的运算结果,选项 A 正确;运算符%是求模运算符

41、,只能对整数类型的变量进行运算,选项 B 正确;复合运算 a*=b+ch 中,先计算 b+ch 的值,再将 a 与 b+ch 之和相乘,结果再赋值给 a,选项 D 正确;语句 ch=(unsigned int)a+b 中,括号优先级最高,所以首先将 a 强制转换成无符号整型,再与 b 相加,结果赋值给 ch,选项 C 错误;本题答案为 C。16.以下可以正确且安全的用作用户标识符的一组选项是_。(分数:1.00)A._32int,long64 B.Switch,unsignedC.Abc,getchD.3break,enter解析:解析 C 语言中,合法的标识符是由字母、数字和下划线组成,并且

42、第一个字符必须是字母或下划线,选项 D 中的 3break 错误;用户标识符不能是 C 语言中的关键字或函数,选项 B 中的 unsigned 是关键字,不是合法的用户标识符;选项 C 中的 getch 是库函数名,不是合法的用户标识符;C 语言区分字母大小写,选项 B 中的 Switch 是合法的用户标识符;选项 A 中的两个标识符都是合法的用户标识符,所以本题答案为 A。17.若有定义:char ch;int a;double d;,当输入为 12345 678910.36 时,以下选项中能给各个变量正确输入数据的是_。(分数:1.00)A.scanf(“%d%c%lf“, B.scanf

43、(“%5d%2c%7.2lf“,C.scanf(“%d%c%lf“,a,ch,d);D.scanf(“5d%2c%7.2lf%“,解析:解析 scanf()函数是标准输入函数,其中双引号之间的内容是格式控制串,后面是输入参数列表。其中输入参数列表中各项都必须是变量地址,所以选项 C 错误;在 scanf()函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,所以选项 B、D 错误;选项 A是正确的,按照 A 的输入格式,12345 赋值给 a,空格赋值给 ch,678910.36 赋值给 d;本题答案为 A。18.以下选项中,合法的 C 语言实数是_。(

44、分数:1.00)A.3.1e3.1B2e1 C.E09D.1.23E解析:解析 C 语言中,实数有两种表示形式:十进制小数形式和指数形式,本题各选项都是以指数形式表示。当实数以指数形式表示:尾数 E(或 e)整型指数。其中尾数是小数形式的实型常量,E 或 e 是指数形式的标识,又称为阶码标识;整型指数表示指数的大小。C 语言规定,E 或 e 之前的尾数必须要有数字,E 或 e 之后的整型指数必须是整数,且 E 或 e 前后以及数字之间不得插入空格。综上:本题答案为B。19.以下叙述正确的是_。(分数:1.00)A.#includestdio.h是 C 程序的一条语句B.使用符号/可以将一条#i

45、nclude 命令写在多行里 C.一个#include 行可以包含多个文件,文件名用逗号分开D.一个#include 行可以包含多个文件,且最后一个文件起作用解析:解析 C 语言中语句必须是以“;”结尾,#include 是文件包含的宏定义,不属于 C 语言的语句,选项 A 错误;一个#include 只可以包含一个文件,如果需要包含多个文件,必须使用多个#include 命令行,选项 C、D 错误;#include 命令如果太长,可以使用符号/将命令写成多行,选项 B 正确,本题答案为 B。20.与数学式 (x 2 -y 2 )cos(45) 对应的 C 语言表达式是_。(分数:1.00)A

46、.(pow(x,2)-pow(y,2)*cos(3.1415926*45/180) B.(pow(2,x)-pow(2,y)*cos(3.1415926*45/180)C.(x*x-y*y)*cos(45)D.(x2-y2)*cos(45)解析:解析 x 的平方在 C 语言中有 2 种表示方法:pow 函数和 x*x,选项 D 错误;pow()函数第一个参数是底数,第二个参数是指数,所以 x 的平方是 pow(x,2),选项 B 错误;余弦值需要使用 cos 函数,数学上,360 度等价于 2,所以 45 度转换成整数是 1/4,选项 C 错误;本题答案为 A。21.以下程序拟实现计算 s=1+2*2+3*3+n*n+,直到 s1000 为止。 #includestdio.h main() int s,n; s=1; n=1; do n=n+1;s=s+n*n; while(s1000); printf(“s=%d/n“,s); 程序运行后,不能得到正确结果,以下修改方案正确的是_。(分数:1.00)A.把 n=n+1;改为 n=n*n;B.把 s=1;改为 s=0;C.把 n=1;改为 n=0;D.把 while(s1000);改为 while(s=1

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

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

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