ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:101.50KB ,
资源ID:1325933      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1325933.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C语言真题6及答案解析.doc)为本站会员(syndromehi216)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

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