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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级(C语言)机试历年真题试卷汇编17及答案解析.doc

1、国家二级(C 语言)机试历年真题试卷汇编 17及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的2.下列各序列中不是堆的是( )。(分数:2.00)A.(91,85,53,36,47,30,24,12)B.(91,85,53,47,36,30,24,12)C.(

2、47,91,53,85,30,12,24,36)D.(91,85,53,47,30,12,24,36)3.设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为( )。(分数:2.00)A.4B.6C.m一 5D.m一 64.定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是( )。(分数:2.00)A.一 369B.369C.0369D.整数集合1,2,3,4,55.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依

3、次入栈,然后再依次出栈,则元素出栈顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA6.如下所示的系统结构图的最大出扇数是( )。 (分数:2.00)A.nB.1C.3D.47.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低耦合、低内聚B.高耦合、高内聚C.低耦合、高内聚D.内聚与耦合无关8.软件的生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程9.在数据库设计中,描述数

4、据间内在语义联系得到 ER图的过程属于( )。(分数:2.00)A.逻辑设计阶段B.需求分析阶段C.概念设计阶段D.物理设计阶段10.一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是( )。(分数:2.00)A.一对多B.一对一C.多对一D.多对多11.以下叙述中错误的是( )。(分数:2.00)A.使用三种基本结构构成的程序只能解决简单问题B.结构化程序由顺序、分支、循环三种基本结构组成C.C语言是一种结构化程序设计语言D.结构化程序设计提倡模块化的设计方法12.C源程序中不能表示的数制是( )。(分数:2.00)A.十进制B.八进制C.二进

5、制D.十六进制13.关于 C语言标识符,以下叙述中错误的是( )。(分数:2.00)A.标识符可全部由数字组成B.标识符可全部由下画线组成C.标识符可全部由小写字母组成D.标识符可全部由大写字母组成14.若有定义语句:int x=10;,则表达式 x一=x+x 的值为( )。(分数:2.00)A.10B.一 20C.0D.一 1015.以下叙述中正确的是( )。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以是 C语言中任意合法

6、的表达式16.与数学表达式 x=y=z 对应的 C语言表达式是( )。(分数:2.00)A.(x=y)(y=x)B.(x=y=z)C.(x=y)!(y=z)D.(x=y)&(y=z)17.有以下程序: #include main() int a=010,b=0X10,c=10; printf(“d,d,dn“,a,b,c); 程序的运行结果是( )。(分数:2.00)A.10,10,10B.8,16,10C.8,10,10D.8,8,1018.设有定义:int a,b;float x,y;,则以下选项中对语句所做的注释叙述错误的是( )。(分数:2.00)A.scanf(“dd“,&a,&b,

7、&x);*多余的输入项不能获得输入数据*B.scanf(“ddf“,a,&b);*多余的格式符f 完全不起作用*C.scanf(“dfd“,&a,&b,&x);*输入项与格式符类型不匹配,变量 b和 x得不到正确的输入数据*D.scanf(“Input:dd“,&a,&b);*格式串中允许加入格式符以外的字符串*19.有以下程序: #include main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2: else y+=3; printf(“dn“,y); 程序运行后的输出结果是( )。(分数:2.00)A.0B.2C.1D.320.若有以下

8、程序: #include main() int s=0,n; for(n=0;nA.6B.18C.10D.2421.对于 while(!E)s,若要执行循环体 s,则 E的取值应为( )。(分数:2.00)A.E等于 1B.E不等于 0C.E不等于 1D.E等于 022.以下叙述中正确的是( )。(分数:2.00)A.三种循环 for、while、do-while 可以互相嵌套B.循环发生嵌套时,最多只能两层C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D.for语句的圆括号中的表达式不能都省略掉23.有以下程序: #include main() int a=1,b=1; whil

9、e(a 一一) b 一一: printf(“d dn“,a,b); 程序的运行结果是( )。(分数:2.00)A.一 11B.0 0C.一 1 0D.1 124.以下数组定义中错误的是( )。(分数:2.00)A.int x23=1,2,3,4,5,6;B.int x3=0;C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;25.有以下程序: #include main() char *p1=0: int *p2=0: float *p3=0: printf(“d d dn“,sizeof(p1),sizeof(p2),sizeof(p3); 程序运行后的输

10、出结果是( )。(分数:2.00)A.4 4 4B.1 4 8C.1 2 4D.1 1 426.设已有定义:float x则以下对指针变量 p进行定义且赋初值的语句中正确的是( )。(分数:2.00)A.float *p=&x;B.int *p=(float)x;C.float p=x;D.float *p=1024;27.设有定义:char*c;。以下选项中能够使字符型指针 c正确指向一个字符串的是( )。(分数:2.00)A.char str=“string“;c=strB.scanf(“s“,c);C.c=getchar();D.*c=“string“;28.有以下程序(说明:字母 A的

11、 ASCII码值是 65): #include void fun(char *s) while(*s) if(*s2)printf(“c“,*s); s+; main() char a=“BYTE“: fun(a);printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.BYB.BTC.YTD.YE29.以下叙述正确的是( )。(分数:2.00)A.C语言函数不可以单独编译B.C语言程序是由过程和函数组成的C.C语言函数可以嵌套调用,例如:fun(fun(x)D.C语言中除了 main函数外,其他函数不可作为单独文件形式存在30.有以下程序: #include int f

12、(int x); main() int n=1,m; m=f(f(f(n); printf(“dn“,m); int f(int x) return x*2; 程序运行后的输出结果是( )。(分数:2.00)A.4B.2C.8D.131.有以下程序: #includestdioh void fun(int a,int n) int i,t; for(i=0;in2;i+) t=ai; ai=an 一 1一 i; an 一 1一 i=t; main() int k10=1,2,3,4,5,6,7,8,9,10,i; fun(k,5); for(i=2;i8;i+) printf(“d“,ki);

13、printf(“n“); 程序的运行结果是( )。(分数:2.00)A.345678B.876543C.1098765D.32167832.若有定义语句: int year=2009,*p=year; 以下各项中不能使变量 year中的值增至 2010的语句是( )。(分数:2.00)A.(*p)+;B.*p+;C.+(*p);D.*p+=1;33.以下程序中,函数 scmp的功能足返回形参指针 s1和 s2所指字符串中较小字符串的首地址: #includestdioh #includestringh char *scrap(char *s1,char *s2) if(strcmp(s1,s2

14、)0)return(s1); else return(s2); void main() int i; char string20,str320; for(i=0;i3;i+) gets(stri); strcpy(string,scmp(str0,str1); *库函数 strcpy功能是对字符串进行复制* strcpy(string,scmp(string,str2); printf(“sn“,string); 若运行时依次输入 abcd、abba 和 abc三个字符串,则输出结果为( )。(分数:2.00)A.abcdB.abbaC.abbcD.abca34.以下对一维数组 a的正确说明是

15、( )。(分数:2.00)A.char a(10);B.int a;C.int k=5,ak;D.char a3=a,b,c;35.设有定义: char p=1,2,3,*q=p; 以下不能计算出一个 char型数据所占字节数的表达式是( )。(分数:2.00)A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizenf(p0)36.以下叙述中正确的是( )。(分数:2.00)A.两个字符串可以用关系运算符进行大小比较B.函数调用 strlen(s);会返回字符串 s实际占用内存的大小(以字节为单位)C.C语言本身没有提供对字符串进行整体操作的运算符D.拼接两个字

16、符串时,结果字符串占用的内存空间是两个原串占用空间的和37.以下叙述中正确的是( )。(分数:2.00)A.局部变量不能被说明为 staticB.只有全局变量才有自己的作用域,函数中的局部变量没有作用域C.只有在函数内部定义的变量才是局部变量D.只要是用户定义的标识符,都有一个有效的作用域38.有以下程序段: int *p; p=_malloc(sizeof(int); 若要求使 p指向一个 int型的动态存储单元,在横线处应填入的是( )。(分数:2.00)A.(int *)B.intC.int *D.(* int)39.有以下程序: #include typedef struct stu

17、char name10; char gender; int score; STU; void f(STU a,STU *b) *b=a: printf(“s c d“,b 一name,b 一gender,b 一score); main() STU a=“Zhao“,M,290,b=“Qian“,f,350; f(a,&b); printf(“s c dn“,bname,bgender,bscore); 程序运行后的输出结果是( )。(分数:2.00)A.Zhao m 290 Zhao m 290B.Qian f 350 Zhao m 290C.Qian f 350 Qian f 350D.Zh

18、ao m 290 Qian f 35040.以下程序用来统计文件中字符的个数(函数 feof用于检查文件是杏结束,结束时返回非零): #include main() FILE *fp;long num=0; fp=fopen(“fnamedat“,“r“); while(_) fgetc(fp);hum+; printf(“num=dn“,num); fclose(fp); 下面选项中,填入横线处不能得到正确结果的是( )。(分数:2.00)A.feof(fp)=NULLB.!feof(fp)C.feof(fp)D.feof(fp)=0二、程序填空题(总题数:1,分数:2.00)41.下列给定

19、程序中,函数 fun的功能是建立一个 NXN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为 1;从外向内第 2层元素的值全部为 2;第 3层元素的值全部为 3,以此类推。例如,若 N=5,生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh #define N 7 *found* void fun(int(*a)【1】) int i,j,k,m; if(N2=0)m=N2

20、; else m=N2+1; for(i=0;im;i+) *found* for(j=【2】;jNi;j+) aij=aNi 一 1j=i+1; for(k=i+1;kNi;k+) *found* aki=akNi 一 1=【3】; main() int xNN=0,i,j; fun(x); printf(“The result is:n“); for(i=0;iN;i+) for(j=0;jN;j+) printf(“3d“,xij); printf(“n“); (分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中,函数 fun的功能是:求 k!(k13),

21、所求阶乘的值作为函数值返回。例如,若k=10,则应输出 3628800。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includeconioh #includestdioh long fun(int k) *found* if k1 return(k*fun(k 一 1); return 1; void main() int k=10: printf(“d!=1dn“,k,fun(k); (分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.编写一个函数,该函数可以统计一个长度为 2的字符串在

22、另一个字符串中出现的次数。 例如,假定输入的字符串为“asd asasdfgasd as zx67 asd mklo”,子字符串为”as”,则应当输出 6。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序:#includeconioh #includestdioh #includestringh #includestdlibh int fun(char *strchar *substr) void main() FILE *wf; char str81,substr3;int n; system(“CLS“); printf(“

23、输入主字符串:“); gets(str); printf(“输入子字符串:“); gets(substr); puts(str);puts(substr); n=fun(str,substr); printf(“n=dn“,n); * wf=fopen(“outdat“,“w“); n=fun(,“asd asasdfg asd as zx67 asdmklo“,“as“);fprintf(wf,“d“,n); fclose(wf); * (分数:2.00)_国家二级(C 语言)机试历年真题试卷汇编 17答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.0

24、0)1.下列叙述中正确的是( )。(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定的 解析:解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此 A错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此 B与 C错误,故本题答案为 D。2.下列各序列中不是堆的是( )。(分数:2.00)A.(91,85,53,36,47,30,24,12)B.(

25、91,85,53,47,36,30,24,12)C.(47,91,53,85,30,12,24,36) D.(91,85,53,47,30,12,24,36)解析:解析:堆可以看成一棵完全二叉树:任一根节点=左右孩子(或者=)(大的叫大根堆,小的叫小根堆)。注意一个堆中的这种性质有一致性,不能既有大于又有小于情况存在。本题可以这么做,把结点按照完全二叉树画出来就一目了然了。这个题目很明显 91是最大的根,而 C选项是“左根右”的排序,那么 91的左边只有 47,其他都在右边,而右边无法按照此顺序排列,故选 C。3.设循环队列为 Q(1:m),其初始状态为 front=rear=m。经过一系列入

26、队与退队运算后,front=15,rear=20。现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为( )。(分数:2.00)A.4 B.6C.m一 5D.m一 6解析:解析:初始状态为 front=rear=m,说明初始状态为空。经过一系列入队与退队运算后,front=15,rear=20,则当前共有 5个元素,在最坏情况下,需要比较的次数为 4次,答案选 A。4.定义无符号整数类为 UInt,下面可以作为类 UInt实例化值的是( )。(分数:2.00)A.一 369B.369 C.0369D.整数集合1,2,3,4,5解析:解析:只有 B选项 369可以用无符号整数来表示和存

27、储。A 选项一 369有负号,C 选项 0369 是小数,都不能用无符号整数类存储。D 选项是一个整数集合,得用数组来存储。5.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.54321EDCBA解析:解析:栈按“后进先出”的原则组织数据,因此入栈最晚的最先出栈,因此本题答案为 B。6.如下所示的系统结构图的最大出扇数是( )。 (分数:2.00)A.n B.1C.3D.4解析:解析:系统结构图的扇出数指的是一个模块直接调用的

28、其他模块数,图中的最大扇出数为 n,答案选 A。7.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低耦合、低内聚B.高耦合、高内聚C.低耦合、高内聚 D.内聚与耦合无关解析:解析:软件设计中,模块划分应遵循高内聚、低耦合的准则,答案选 C。8.软件的生命周期是指( )。(分数:2.00)A.软件产品从提出、实现、使用维护到停止使用退役的过程 B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程解析:解析:一般将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时

29、期都属于软件生命周期。9.在数据库设计中,描述数据间内在语义联系得到 ER图的过程属于( )。(分数:2.00)A.逻辑设计阶段B.需求分析阶段C.概念设计阶段 D.物理设计阶段解析:解析:数据库设计的需求分析阶段是数据库设计的第一阶段,这一阶段收集到的基础数据和一组数据流图是下一步设计概念结构的基础。数据库概念设计的目的是分析数据间内在的语义关联,在此基础上建立一个数据的抽象模型。数据库的逻辑设计主要工作是将 ER图转换成指定的关系数据库中的关系模式。数据库物理设计的主要目标是对数据库内部物理结构做出调整并选择合理的存取路径,以提升数据库访问速度及有效利用存储空间。所以本题答案选 C。10.

30、一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是( )。(分数:2.00)A.一对多 B.一对一C.多对一D.多对多解析:解析:一个运动队有多个队员,表明在运动队表中的每个队与队员表中的一个或多个队员相关;一个队员仅属于一个运动队,表明队员表中的每个队员只可以与运动队表中的一个队相关,为一对多关系。故正确答案为 A。11.以下叙述中错误的是( )。(分数:2.00)A.使用三种基本结构构成的程序只能解决简单问题 B.结构化程序由顺序、分支、循环三种基本结构组成C.C语言是一种结构化程序设计语言D.结构化程序设计提倡模块化的设计方法解析:解析:使

31、用顺序、选择(分支)、循环 3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,因此 A选项错误。12.C源程序中不能表示的数制是( )。(分数:2.00)A.十进制B.八进制C.二进制 D.十六进制解析:解析:在 C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制。因此选择 C。13.关于 C语言标识符,以下叙述中错误的是( )。(分数:2.00)A.标识符可全部由数字组成 B.标识符可全部由下画线组成C.标识符可全部由小写字母组成D.标识符可全部由大写字母组成解析:解析:C 语言标识符只能由字母、数字、下画线构成,且只能以字母、下画线开头,故选项 A不正确。

32、14.若有定义语句:int x=10;,则表达式 x一=x+x 的值为( )。(分数:2.00)A.10B.一 20C.0D.一 10 解析:解析:算术运算符+的优先级高于一=,且一=的结合方向为自右向左,因此表达式 x一=x+x 可以表示成 x=x一(x+x)=10 一(10+10)=一 10,所以选择 D。15.以下叙述中正确的是( )。(分数:2.00)A.分支结构是根据算术表达式的结果来判断流程走向的B.在 C语言中,逻辑真值和假值分别对应 1和 0C.对于浮点变量 x和 y,表达式:x=y 是非法的,会出编译错误D.关系运算符两边的运算对象可以是 C语言中任意合法的表达式 解析:解析

33、:C 语言中,运算符两侧的运算对象可以是任意合法的表达式,选项 D正确;非 0和 0分别对应逻辑真值和假值,选项 B错;关系运算符“=”两侧的运算对象只要为合法的表达式就可以编译通过,选项 C错;分支结构是根据 if或者 else if后面的圆括号内的表达式(不仅仅是算术表达式,还有赋值表达式、逗号表达式、关系表达式、逻辑表达式等)的值来判定流程走向的,选项 A错误;所以答案选 D。16.与数学表达式 x=y=z 对应的 C语言表达式是( )。(分数:2.00)A.(x=y)(y=x)B.(x=y=z)C.(x=y)!(y=z)D.(x=y)&(y=z) 解析:解析:本题考查关系表达式和逻辑表

34、达式。y 小于等于 x,同时 y大于等于 z,因此 x=y 和 y=z是逻辑与的关系。故 D选项正确。17.有以下程序: #include main() int a=010,b=0X10,c=10; printf(“d,d,dn“,a,b,c); 程序的运行结果是( )。(分数:2.00)A.10,10,10B.8,16,10 C.8,10,10D.8,8,10解析:解析:本题考查进制转换以及 printf函数输出格式。题中 a,b,c 是以十进制格式输出,而 010是八进制(常以数字 0开头,八进制一位对应二进制的三位),转换为十进制是 8;0X10 是十六进制(以 0X或 0x开头,0 为

35、数字,x 不区分大小写),转换为十进制是 16;10 是十进制。所以最后输出结果是8,16,10。18.设有定义:int a,b;float x,y;,则以下选项中对语句所做的注释叙述错误的是( )。(分数:2.00)A.scanf(“dd“,&a,&b,&x);*多余的输入项不能获得输入数据*B.scanf(“ddf“,a,&b);*多余的格式符f 完全不起作用* C.scanf(“dfd“,&a,&b,&x);*输入项与格式符类型不匹配,变量 b和 x得不到正确的输入数据*D.scanf(“Input:dd“,&a,&b);*格式串中允许加入格式符以外的字符串*解析:解析:考查 scanf

36、函数的格式输入,“格式控制串”中允许有非格式字符,只不过输入时也要输入该非格式字符,选项 D正确。输入的数据与输出类型不一致时,编译依然能通过,只不过输出结果有可能不正确,选项 C正确。输入多个数据时,系统等待接收的数据个数与“格式控制串”中的格式控制符的个数一致,然后把接收的数据依次赋值给后面的变量,若变量个数多于格式控制符个数,则多余的变量不获取数据,若少于,系统会在接收完额定数目的数据之后报错,答案选 B。19.有以下程序: #include main() int x=1,y=0; if(!x)y+; else if(x=0) if(x)y+=2: else y+=3; printf(“

37、dn“,y); 程序运行后的输出结果是( )。(分数:2.00)A.0 B.2C.1D.3解析:解析:在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行,y 值没有发生改变,答案选 A。20.若有以下程序: #include main() int s=0,n; for(n=0;nA.6B.18C.10D.24 解析:解析:第一次 for循环,n 的值为 0,所以从 default后面的语句开始执行,s+=4,s+=1,s+=2,s+=3,s 的值为 10。进入第二次 for循环,n 的值为 1,所以执行s+=1,s+=2,s+=3,s 的值为 16。进入第三次 for循环,n 的值

38、为 2,所以执行 s+=2,s+=3,s 的值为21。进入第四次 for循环,n 的值为 3,所以执行 a+=3,s 的值为 24。21.对于 while(!E)s,若要执行循环体 s,则 E的取值应为( )。(分数:2.00)A.E等于 1B.E不等于 0C.E不等于 1D.E等于 0 解析:解析:while 语句的一般形式为:while(表达式)语句;,其中表达式是循环条件,语句为循环体。while语句的语义是计算表达式的值,当值为真(非 0)时,执行循环体语句。该题中如要执行语句 s,则!E应为真,因此 E应等于 0,故 D选项正确。22.以下叙述中正确的是( )。(分数:2.00)A.

39、三种循环 for、while、do-while 可以互相嵌套 B.循环发生嵌套时,最多只能两层C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D.for语句的圆括号中的表达式不能都省略掉解析:解析:C 语言中,循环嵌套可以多层,选项 B错;循环嵌套时建议采用缩进形式书写,这是为了增加代码的可读性,但是不会产生编译错误,选项 C错误;for 语句的圆括号内的三个表达式在语法上都可以省略,但是两个分号“;”不能省略,选项 D错;选项 A的表述正确,所以答案选 A。23.有以下程序: #include main() int a=1,b=1; while(a 一一) b 一一: printf

40、(“d dn“,a,b); 程序的运行结果是( )。(分数:2.00)A.一 11B.0 0C.一 1 0 D.1 1解析:解析:while 循环的判定条件为“a 一一”,即 a先作为循环条件判定,然后再自减 1。第一次循环判定条件为真,执行完毕后 a=0,b=0,第二次循环判定条件为假,循环不成立,所以只执行判定表达式“a 一一”,所以最终 a=一 1,b=0,答案选 C。24.以下数组定义中错误的是( )。(分数:2.00)A.int x23=1,2,3,4,5,6;B.int x3=0;C.int x3=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6; 解析:解析:二

41、维数组的第一维数据表示行数,第二维数据表示列数,所以 x23中的数据应为两行三列,和定义内容不符,选项 D错误,答案选 D。25.有以下程序: #include main() char *p1=0: int *p2=0: float *p3=0: printf(“d d dn“,sizeof(p1),sizeof(p2),sizeof(p3); 程序运行后的输出结果是( )。(分数:2.00)A.4 4 4 B.1 4 8C.1 2 4D.1 1 4解析:解析:注意 sizeof是一个运算符,它是运算数据所占单元数量,故答案为 4。26.设已有定义:float x则以下对指针变量 p进行定义且

42、赋初值的语句中正确的是( )。(分数:2.00)A.float *p=&x; B.int *p=(float)x;C.float p=x;D.float *p=1024;解析:解析:指针是用来存放地址的变量,用“类型名*指针变量名”的形式定义。赋值时应将某个变量地址即&x 赋给指针变量,因此选择 A。27.设有定义:char*c;。以下选项中能够使字符型指针 c正确指向一个字符串的是( )。(分数:2.00)A.char str=“string“;c=str B.scanf(“s“,c);C.c=getchar();D.*c=“string“;解析:解析:B 项中 scanf()函数是将 c定

43、义为一个字符数组的数组名,C 项中是将 c定义为一个字符型变量,D 项是在指针定义时为它赋值,否则是不合法的。A 项定义字符数组 str,再将字符数组 str的首地址赋给字符型指针 c,所以 A正确。28.有以下程序(说明:字母 A的 ASCII码值是 65): #include void fun(char *s) while(*s) if(*s2)printf(“c“,*s); s+; main() char a=“BYTE“: fun(a);printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.BYB.BTC.YTD.YE 解析:解析:函数只会输出 ASCII码值为

44、奇数的字母,执行 fun(a)时,依次取出 a中的字母,因为 B的 ASCII码值为 66,所以不会输出 B,字母 Y的 ASCII码值为 89,字母 T的 ASCII码值为 84,字母 E的ASCII码值为 69,所以最后输出字母 YE。29.以下叙述正确的是( )。(分数:2.00)A.C语言函数不可以单独编译B.C语言程序是由过程和函数组成的C.C语言函数可以嵌套调用,例如:fun(fun(x) D.C语言中除了 main函数外,其他函数不可作为单独文件形式存在解析:解析:一个 C语言程序由一个或多个函数组成,选项 B错误;一个 C程序可以有一个或多个程序文件,每个程序文件可以有一个或多

45、个函数,并且每个程序文件可以单独编译,所以选项 A、D 错误;函数之间可以相互调用,函数体内调用自身的函数为递归函数,答案选 C。30.有以下程序: #include int f(int x); main() int n=1,m; m=f(f(f(n); printf(“dn“,m); int f(int x) return x*2; 程序运行后的输出结果是( )。(分数:2.00)A.4B.2C.8 D.1解析:解析:考查函数的递归调用。m=f(f(f(n)=f(f(2)=f(4)=8,答案选 C。31.有以下程序: #includestdioh void fun(int a,int n)

46、int i,t; for(i=0;in2;i+) t=ai; ai=an 一 1一 i; an 一 1一 i=t; main() int k10=1,2,3,4,5,6,7,8,9,10,i; fun(k,5); for(i=2;i8;i+) printf(“d“,ki);printf(“n“); 程序的运行结果是( )。(分数:2.00)A.345678B.876543C.1098765D.321678 解析:解析:函数 fun()的功能是把数组 a中的前 n个元素逆序排列,所以调用函数 fun(k,5)结束后,数组 k中的数据为5,4,3,2,1,6,7,8,9,10,输出数组第 3个到第 8个元素之间的数据,所以选项 D正确。32.若有定义语句: int year=2009,*p=year; 以下各项中不能使变量 year中的值增至 2010的语句是( )。(分数:2.00)A.(*p)+;B.*p+; C.+(*p);D.*p+=1;解析:解析:考查指针的用法。指针变量存储的是其指向的变量的地址,*p 表示的是 p指向的变量的值,自加运算符(+)的优先级要高于取值运算符(*)的优先级,*p+表示的是先将指针

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