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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(C语言习题详细解答.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言习题详细解答.docx

1、C语言习题详细解答程序设计基础(C语言版)习题第01章 绪论一选择题1.以下叙述中正确的是_。A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整 【解析】 程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选项A)、B)、C)说法都不完整。2.以下关于简单程序设计的步骤和顺序的说法中正确的是。A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好

2、文档,再根据文档进行编码和上机调试,最后确定算法和数据结构 【解析】设计一个能解决实际问题的计算机程序需要经过以下几个过程: 建立模型。 算法设计:给出解决问题的步骤,即算法。 算法表达:选择一种表达算法的工具,对算法进行清晰的表达。 编写程序:选择一种程序设计语言,把以上算法程序化,这称为编写程序。 程序调试:对编写好的程序进行调试,修改程序中的错误。 程序文档编写与程序维护。综上所述,B)选项是符合上述描述的,其他选项不恰当。3,叙述中正确的是_。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完 【解析】函数是C程序的基

3、本组成单位;C语言书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。故本题答案为C)。4.以下叙述中正确的是。A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中 【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)。5.以下关于C语言的叙述中正确的是。A)C

4、语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以在使用之前的任何位置进行定义C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示 【解析】C语言中注释可以放在任何位置,但不能夹在变量名或关键字中间,选项A正确;C语言中的变量要在使用之前定义,C标准规定定义位置在相关程序块的首部,选项B错误;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。6.以下关于C语言数据类型使用的叙述中错误的是。A)若要准确无误差地表示自然数,应使用整数类型B)若要保存带有多位小数

5、的数据,应使用双精度类型C)若要处理如人员信息等含有不同类型的相关数据,应自定义结构体类型D)若只处理真和假两种逻辑值,应使用逻辑类型 【解析】C语言中没有逻辑类型,若只处理真或假两种逻辑值,可以使用整型数1或0表示,故选D。第02章 基本数据类型一选择题1.有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是。A)a%(int)(xy) B)ax!y; C)(a*y)%b D)yxyx 【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本

6、身就错误,不能给表达式赋值。所以,本题答案为B)。2.有以下程序#includemain()int s,t,A10;double B6; ssizeof(A); tsizeof(B); printf(%d,%dn,s,t);在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6 【解析】sizeof的作用就是返回一个对象或者类型所占的内存字节数。在VC6中整型占4个字节,双精度实型占8个字节,所以选C)。3.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是。A)a=a+,i+; B)i=(a+k)=(i+k);

7、C)i=a%11; D)i=!a; 【解析】C语言中取余运算符两侧的操作数只能是整型(若为char型,则会自动转换成整型)。4.有以下程序:#include main()inta1,b0; printf(%d,bab); printf(%dn,a2*b);程序运行后的输出结果是_。A)0,0 B)1,0 C)3,2 D)1,2 【解析】 执行第一个printf语句时,bab1,所以输出1,执行第二个printf语句时,a2*b=2,所以输出结果为2。5.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是。A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4

8、)+c; D)a=1+(b=c=4); 【解析】在A)选项中,赋值语句b=4先把4赋值给整型变量b,之后执行(b=4)=3是把常量3赋值给常量4,但是由于C语言规定赋值运算符的左侧只能是变量,不能是常量或者表达式,因此A)选项错误。6.有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是。A)a%(int)(xy) B)ax!y; C)(a*y)%b D)yxyx 【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。D)选项表达式本身就错误,不能给表达式赋

9、值。所以,本题答案为B)。7.若有定义语句:intx10;,则表达式xxx的值为_。A)20 B)10 C)0 D)10 【解析】 xxx可化为:xx(xx),由于x初始值为10,所以计算后,x102010,因此选B)。二填空题1.以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#includemain()int x=256; printf(%d-%d-%dn,_,x/10%10,x/100); 参考答案:x%10【解析】x=256,x%10=6。2.以下程序运行后的输出结果是 。#includemain() int a;a=(int)(doub

10、le)(3/2)+0.5+(int)1.99*2);printf(%dn,a); 参考答案:3【解析】本题中3/2=1,(double)(3/2)=1,(int)1.99*2=1*2=2,因此(int)(1+0.5+2)=(int)3.5=3。3.若有定义语句:int a5;,则表达式:a的值是_。 参考答案:5【解析】 a的含义是在使用a值以后,使a值加1,所以a的值为5。4.若有语句double x17;int y;,当执行y(int)(x/5)%2;之后y的值为_。 参考答案:1【解析】 y(int)(x/5)%2(int)(3.4)%23%21。5.设变量a和b已正确定义并赋初值。请写

11、出与aab等价的赋值表达式 _。 参考答案:a=-b【解析】aab等价于aa(ab),等价于ab。第03章 顺序结构一.选择题1.有以下程序#includemain()char a,b,c,d; scanf(%c%c,&a,&b); c=getchar();d=getchar(); printf(%c%c%c%cn,a,b,c,d);当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意,回车也是一个字符)1234则输出结果是A)1234 B)12 C)12 D)12 3 34 【解析】程序根据用户输入分别给字符型变量a、b、c、d赋值为1、2、3,因此输出到屏幕得到选项C中的格式。2

12、.有以下程序段:charch;intk;cha;k12;printf(%c,%d,ch,ch,k);printf(k%dn,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零或不定值C)a,97,12k12D)a,97,k12 【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k12,所以选项D)为正确答案。3.有以下程序#includemain() char a3

13、0,b30;scanf(%s,a);gets(b);printf(%sn%sn,a,b);程序运行时若输入:how are you? I am fine 则输出结果是A)how are you? I am fine B)how are you? I am fineC)how are you? I am fine D)how are you? 解析】scanf函数会把空格字符作为输入的字符串之间的分隔符,因此字符串a为how。gets()函数读取字符串时,直至接受到换行符或EOF时才停止,并将读取的结果存放在指针所指向的字符数组中,因此其余输入的内容赋值给b。二填空题1.以下程序运行后的输出结果

14、是。#includemain()int a200,b010; printf(%d%dn,a,b); 参考答案:2008【解析】整型变量a的值为200,b的值010是用八进制表示的10即十进制的8,最后输出格式均为%d,即十进制格式,所以输出为2008。2.有以下程序(说明:字符0的ASCIl码值为48)#includemain() char c1,c2;scanf(%d,&c1);c2=c1+9;printf(%c%cn,c1,c2);若程序运行时从键盘输入48,则输出结果为 。 参考答案:09【解析】本题中通过ASCII码对字符变量赋值,由于字符0的ASCII码是48,因此字符变量c1为0,

15、c2的ASCII码比c1大9,因此c2为9。第04章 选择结构一选择题1.若变量已正确定义,在if(W)printf(%dn,k);中,以下不可替代W的是。A)abc B)chgetchar() C) abc D)a 【解析】在C语言中,表示不等于不能用,而只能使用!=。其他选项均满足题目的要求。2.当变量c的值不为2、4、6时,值也为真的表达式是。A)(c2)|(c4)|(c6)B)(c2& c2&c2& c2& cA& kkA|kka&(kk32)ZD)isalpha(kk)&(kk91) 【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII

16、码在A和Z之间就可以了,选项A)和C)符合此要求。在选项D)中,函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。本题答案选B)。4.有以下程序: #include main() int al,b2,c3,d0; if(al & b2) if(b!2|c!3) printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c); 程序运行后的输出结果是_。A)1,2,3B)1,3,2C)l,

17、3,3D)3,2,1 【解析】 程序首先执行第一个判断语句,a1成立;b2,先判断b是否为2,再进行b加1操作,执行后b的值为3。继续执行第二个判断语句,注意程序此时进行逻辑或运算,b!2的值为真,因此条件表达式b!2|c!3的值为真,程序便不再执行第二个逻辑语句c!3,而直接进行输出操作。因此,本题正确答案为C)。5.执行以下程序段后,w的值为_。intwA,x14,y15;w(xy)&(wa);A)1 B)NULLC)1 D)0 【解析】根据题目所给条件可知,x|y为1,wb) ab;ca; if(c!a) cb; printf(%d,%d,%dn,a,b,c);其输出结果是A)程序段有语

18、法错B)3,5,3C)3,5,5D)3,5,7 【解析】两个if语句的判断条件都不满足,程序只执行了ca这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为选项B)。7.有以下程序段:int a,b,c;a10;b50;c30;if(ab)ab,bc;ca;printf(a%d b%d c%dn,a,b,c);程序的输出结果是_。A)a10 b50 c10 B)a10 b50 c30C)a10 b30 c10 D)a50 b30 c50 【解析】该题考查if条件语句,当条件为真时,将b值赋给a,c值赋给b;当条件为假时,将a值赋给c。该题中if条件为假

19、,所以将a的值赋给c,故a10 b50 c10。8.有以下程序:#includemain()intx1,y2,z3;if(xy)if(yy为假,所以直接执行最后一行代码。9.有以下程序:#includemain()intx1,y0,a0,b0; switch(x) case 1: switch(y) case 0: a; break; case 1: b; break; case 2:a; b; break; case 3:a; b; printf(a%d,b%dn,a,b);程序的运行结果是A)a1,b0B)a2,b2C)a1,b1D)a2,b1 【解析】本题考查了 switch结构的内容。

20、在C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2分支。最后a和b的值分别为2和1。二填空题1.在C语言中,当表达式值为0时表示逻辑值假,当表达式值为 时表示逻辑值真。 参考答案:非0【解析】本题一定要明确一个概念,即:所有非0的数(并不只是1),在c语言中都表示逻辑值为真。2.设x为int型变量,请写出一个关系表达式_ ,用以判断x同时为3和7的倍数时,关系表达式的值为真。 参

21、考答案:(x%3=0)&(x%7=0)【解析】x%3=0能保证x是3的倍数,x%7=0能保证x是7的倍数,(x%3=0)&(x%7=0)能保证x是3的倍数并且x是7的倍数。3.有以下程序#includemain() int a=1,b=2,c=3,d=0; if(a=1) if(b!=2) if(c=3)d=1; else d=2; else if(c!=3)d=3; else d=4; else d=5; printf(%dn,d);程序运行后的输出结果是_ 。 参考答案:4【解析】a=1为真,b!=2为假,c!=3为假,所以d=4。4.有以下程序#includemain() int x;s

22、canf(%d,&x);if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%dn,x+5);若程序运行时从键盘输入12,则输出结果为 。 参考答案:1217【解析】本题中输入12时,第一条if的条件x15不满足因此不执行,第二条if的条件x10满足因此输出12,第三条if的条件x5满足因此输出17。5.以下程序运行后的输出结果是 。#includemain() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf(%d%dn,x,y); 参考答案:20 0【解析】本题中if选择的条件x=y不满足,因此

23、直接执行后面的x=y和y=t,则x的值为20,y的值为0。第05章 循环结构一选择题1.以下不构成无限循环的语句或语句组是A)n=0; do+n;while(n=0);B)n=0; while(1)n+;C)n=10; while(n);n-;D)for(n=0,i=1;i+) n+=i; 【解析】项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n0不成立,跳出循环。所以正确答案为A)。2.有以下程序#includemain() int y10; while(y); printf(y%dn,y);程序执行后的输出结果是A)y0 B)y1C)yl D)while构成无限循环 【解析

24、】当y减为1时判断while(y-),此时满足条件,但是y变成0。下次循环判断while(y-)时,因为y为0不满足条件跳出循环,但是此时也要执行y-,所以y变成了-1。 打印输出时输出-1。3.有以下程序:#includemain()inti5;doif(i%31)if(i%52)printf(*%d,i);break; i;while(i!0);printf(n);程序的运行结果是_。A)*7 B)*3*5C)*5D)*2*6 【解析】整个程序中只有对i增加的语句而没有对i减少的语句,所以2、3都不可能出现,选项B)和D)错误。而i5时第一个if语句的表达式为假,所以选项C)也错误。4.以

25、下程序段中的变量已正确定义: for(i0;i4;i,i) for(kl;k3;k);printf(*);程序段的输出结果是_。A)* B)* C)* D)* 【解析】 本题考察for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(*)语句只执行一次。因此,本题正确答案为D)。5.有以下程序#includemain() int a=1,b=2; for(;a8;a+)b+=a;a+=2; printf(%d,%dn,a,b);程序运行后的输出结果是A)9,18 B)8,11 C)7,11 D)10,14 【解析】初始值a=1,b

26、=2,第一次循环:b=b+a=2+1=3,a=a+2=1+2=3,a=a+1=3+1=4;第二次循环:b=b+a=3+4=7,a=a+2=4+2=6,a=a+1=6+1=7;第三次循环:b=b+a=7+7=14,a=a+2=7+2=9,a=a+1=9+1=10,故本题答案选D。6.有以下程序:#includemain()inti,j; for(i3;i1;i) for(j1;j2;j)printf(%d,ij); printf(n); 程序的运行结果是_。A)2 3 4 B)4 3 2 3 4 5 5 4 3C)2 3 D)4 5 3 4 3 4 4 5 2 3 【解析】该题目主要考查for嵌套循环,要注意循环变量i和j的取值范围。输出结果为变量i和j的和。8.设变量已正确定义,以下不能统计出一行中输入

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1