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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言程序设计实例教程第三版练习题答案2.docx

1、C语言程序设计实例教程第三版练习题答案2练习2一、选择题1下面关于语句的说法中,正确的是( A B D )。A、对程序中使用的变量、数组、函数等进行定义、声明的语句属于说明性语句 B、表达式后面加;号构成表达式语句C、复合语句中不允许包含另一条复合语句D、对程序执行流程起控制作用的语句属于控制语句解析:复合语句是可以嵌套的,所以C选项是错误的;2下面语句中,错误的是( B )。A、m=xyz; B、float x=y=z; C、m=x,my; D、k=mn;k?:x,y;解析:C语言中,在变量声明语句中不能使用连续赋值初始化变量,故 B选项是错误的。3下面不正确的if语句形式是( A )。A、

2、if (x=y;) m+; B、if (x=y) m=0 else n=1; D、if ( x!=y ) m=n;解析:C选项中if结构中条件成立时执行的m=0后没有分号,缺少语句标识,故结构错误;5下面程序的运行结果是( A )。int main()int x=7,y=8,z=9; if(xy) x=y,y=z; z=x; printf(x=%d y=%d z=%dn,x,y,z); return 0; A、x=7 y=8 z=7 B、x=7 y=9 z=7 D、x=8 y=9 z=7 D、x=8 y=9 z=8 解析:这里主要是考察if选择结构条件下所能执行的语句只有x=y,y=z;而后边

3、的z=x;并受选择结构条件所限制,所以根据题目要求当xy(78)不成立,x=y,y=z;语句不能被执行,而只执行z=x;语句,将变量x的值赋值给z变量,而x与y的值不变化,所以x=7 y=8 z=7,故答案选A;6下面程序的运行结果是( B )。int main()int x=6,y=6; if(+xy+) printf(%dn,x+); else printf(%dn,y+); return 0;A、6 B、7 C、8 D、9解析:这里考察自增运算符+,if(+xy+)条件中+x表示先自增变为7,而y+是先参与比较运算后再是y变量自增,过条为7b) if(ac) if(ad) m=1; el

4、se m=2; else m=3;printf(%dn,m);return 0;A、0 B、1 C、2 D、3解析:这里考察if的嵌套,进一步考察else与if的配对,根据上一题描述,在程序中由上而下从第1个else m=2;查找离他最近的if(ad) m=1;与其配对,下面第2个else m=3;与离它最近且没有配对的if是if(ac),程序只有两个else,那么第1个if(ab)没有与之配对的else;当进行if(ab)判断时其条件为假,没有执行的else,整个if结构执行结束,执行printf语句输出m的值,而m的初值为0,故答案选A;11对下面程序运行结果的分析中,正确的是( D )。

5、int main ( )int x,y;scanf(%d,%d,&x,&y);if (xy) x=y;y=x;else x+; y+;printf(%d,%dn,x,y);return 0; A、若输入4和3,则输出4和5 B、若输入3和4,则输出4和5C、若输入4和3,则输出4和5 D、有语法错误,不能通过编译解析:本题考核重点是if选择结构中语句层次的划分,对于if语句后只能有一条语句,如果多条需要用一对花括号 将多条语句括起来,故本题的if语句后面有两条语句,所以这是一个单条件的if语句,后面的else不能与这个if匹配,所以就语法错误,故答案选D12以下关于switch语句的叙述中,不

6、正确的是( C )。A、switch语句中各case子句后面的表达式必须是整型或字符型常量表达式。B、同一switch语句中各case子句后面表达式的值必须互不相同。C、switch语句中必须有default部分 。 D、switch语句必须与break语句结合才能实现真正的选择结构。解析:再switch结构语句中defaule部分是可有可无的,他的作用是当所有case后的常量都不满足表达式的值时,default位置作为switch语句结构的入口点;而break语句再switch语句中的作用是中断switch语句的执行,以实现分支效果,本题答案选C;13假定已定义变量int x,y;则下面正确

7、的switch语句是( BD )。A、switch(x) case 1.1: y+; case 2.1: y-; default: y*=y; C、switch(x) case 2: y+; case 1+1: y-; default:y*=y; B、switch(x) case a:y+; case b:y-; default:y*=y; D、switch(x) default: y*=y; case 1: y+; case 1+1: y-; 解析:这里考察switch语句结构的语法:case后面是整型或字符型常量表达式,且每个case后的值需要互不相同,故答案A和C都是错误的,答案选B和D

8、;14以下程序输出结果是( B )。int main()int x=1,y=2,m=0,n=0;switch(x) case 1:switch (y) case 2 : m+ ; break ; case 4 : n+ ; break ; case 3:m+; n+; break;case 5:m+; n+;printf(m=%d,n=%d,m,n);return 0;A、m=1,n=0 B、m=2,n=1 C、m=1,n=1 D、m=2,n=2解析:这里考察switch语句的执行流程,因为x=1,所以外层的switch语句执行从case 1入口开始,而内层switch在case 2入口执行使

9、得m由0变为1,然后执行break语句跳出内层switch结构,顺序执行外层的case 3 使得m由1变为2,n由0变为1,故答案选B;15下面的循环语句执行完毕后,循环变量k的值是( B )。int k=1;while (k+10);A、10 B、11 C、9 D、无限循环,值不确定解析:本题考查自增运算符的使用,以及空语句在作为循环体执行,当k为9时,k+是先将k的值参与表达式k10运算,910成立,然后k的值自增变为10,继续执行k+10,即1010不成立,跳出循环,但是在跳出循环时k由10自增变为11,故答案选择B;16对下面程序段中while循环执行情况分析正确的是( C )。int

10、 k=2;while (k=0) printf(%d,k);k-;A、该循环只执行1次 B、循环是无限循环C、循环体中的语句1次也不执行 D、存在语法错误解析:这里考察阅读者是否仔细阅读while循环结构的表达式,这里表达式并不是关系表达式,而是一个赋值表达式,是将0赋值给k,表达式的结果为0,即终止循环,循环体育局一次也不执行,故答案选C;17以下程序段( C )。x=-1;do x=x*x; while (!x);A、是死循环 B、循环执行2次 C、循环执行1次 D、有语法错误解析:dowhile结构语句是先执行循环体语句x=x*x,即(-1)*(-1)=1,将1赋值给x,然后进行循环条件

11、表达式!x的运算,结果为!1,即为0,所以终止循环,故答案选C;18对下面程序段中do-while循环执行情况分析正确的是( C )。int m=1,n=5;dom+;n-;while (mn); A、该循环可能1次也不执行 B、该循环执行1次C、该循环执行2次 D、该循环执行3次解析:本题考查dowhile结构语句的执行流程,第一次循环体执行后,循环条件为24成立,继续执行第二次循环体后,循环条件为3=A & ch=a& ch=z) c2+; return 0;A、ch=getchar( ) B、getchar( ) C、ch=getchar( ) D、scanf(%c,&ch)解析:C语言

12、从键盘获取字符数据,使用函数getchar()获取单个字符,这里使用循环结构设计逐个获取字符,直到获取到回车终止,因为下面是对变量进行判断,所以使用函数getchar()获取的字符需要赋给变量ch,故答案选A;20下面有关for循环的正确描述是( D )。A、for循环只能用于循环次数已经确定的情况。B、for循环的执行流程是先执行循环体语句,后判断表达式。C、在for循环中, 表达式1和3可以省略,但表达式2是不能省略。D、for循环的循环体中, 可以包含多条语句,但必须用花括号括起来。解析:本题考查for循环结构语句的语法,对于A的说法是不正确的,不能用只能;对于B答案显然不符合for循环

13、的执行流程描述,for循环是先判断循环条件,后执行循环体语句;对于C答案,for循环结构中三个表达式都可以省略,当表达式2省略,默认循环条件为真;故答案选择D;21执行语句for (i=1;i+4;) ; 后变量i的值是( C )。A、3 B、4 C、5 D、不定解析:这里考察自增运算以什么值参与表达式运算,i+是先用i的值参与表达式运算再自增,而+i是先自增,然后以自增结果参与表达式运算;故而i=1开始,第1次循环条件判断14,然后i自增变为2,进入第2次循环条件判断24, 然后i自增变为3,进入第3次循环条件判断34, 然后i自增变为4,进入第4次循环条件判断44, 然后i自增变为5,这时

14、循环条件判断为假跳出循环,这时变量i的值为5,故答案选C;22以下程序段的循环次数是( B )。for (i=2; i=0; )printf(%d,i-);A、无限次 B、0次 C、1次 D、2次解析:考察识别for结构中各表达式的作用,表达式1为i=2,即为i变量赋值,表达式2为循环条件判断,i=0,表达式即2=0,显然为假,即终止循环,这里表达式3省略;故而循环次数为0,故答案选B;23下面的双重循环中的内循环体将一共会被执行( C )次。for(i=0;i=3;i+)for(j=4;j;j-)printf(a);A、12 B、15 C、16 D、20解析:外层循环for中i从0到3循环了

15、4次,内循环for中j从4到1也是循环了4此,对于内循环体的次数为内外循环次数的乘积,即4*4=16,故答案选C;24如果下面程序在运行时输入1,-1,0,2,-2,则程序输出结果是( C )。int main()int x,i,sum;for (i=0,sum=0; i5;i+) scanf(%d,&x); if (x0) continue; sum+=x; printf(%d,sum); return 0;A、-3 B、0 C、3 D、1解析:本题考察循环结构中continue语句的作用;根据程序的执行流程中可以看到这里使用了for循环结构,而佛如循环体中并没有改变循环变量i的值,故for

16、循环的次数为5此,即i从0到4;这里sum初值为0,循环体中有键盘获取数据,将执行5次,获取5个数据,且体中使用sum变量对键盘送入的数据进行累加,但是在累加之前有一个判断语句if (x0) continue;代表键盘获取的数据为负数将结束本次循环,不执行后续的累加语句,故题目是累加键盘送入数据中大于0的数据的和,所以答案选C;25如果下面程序在运行时输入1,2,0,-1,-2,则程序输出结果是( C )。int main()int x,i,sum;for (i=0,sum=0; i10;i+) scanf(%d,&x); if (x0) break; sum+=x; printf(%d,su

17、m);return 0;A、-3 B、0 C、3 D、1解析:本题考察循环结构中break语句的作用;与上题类似,只是本体的循环次数本来是10此,只是在循环体中进行累加之前有一个判断语句if (x0) break;即在键盘键入负数后终止循环;故只能累加键盘键入的负数之前的数据;故答案选C;二、填空题1.在一个循环语句的循环体中又包含了另一个循环语句,则这种循环形式称为循环的嵌套。2.for语句中的三个表达式可以全部或部分省略,但应保留其分隔符 ; 。3._switch_通常适用于条件表达式的取值为多个离散而不连续的整型值(或字符型值)时实现多分支选择结构。4.C语言提供的选择控制语句可以对给定

18、的条件进行判断,并根据判断结果选择执行 分支程序 。5.语句可以分为说明性语句, 表达式语句 , 复合语句 和 控制结构语句 4种类型,if语句属于其中的 控制结构语句 。6.C语言中语句的结束标志是 分号 。7.复合语句是用一对 界定的语句块。8.将“y能被4整除但不能被100整除,或者y能被400整除”这一条件描述写成逻辑表达式 y%4=0&y%100!=0|y%400=0 。9.能够表示“40x=60或x40&x=60|x120 。10.下面程序的功能是求3个整数中的最小数,,将程序补充完整。int main()int x,y,z,min;scanf(“%d%d%d”,&x,&y,&z)

19、;if( xy ) min=x;else min=y;if( zmin ) min=z ;printf(“min=%d”,min);return 0;11.switch语句中case关键字后面的表达式必须是 整型常量表达式 。12.switch语句只有与 case 语句结合使用,才能实现程序的选择结构。13.C语言实现循环结构的三种语句分别是 for 语句、 while 语句和 do-while 语句。14.除for语句外,可能一次循环体也不执行的循环语句是 while ,至少执行一次循环体的循环语句是 do-while 。15.若键盘输入字符ABCDE(表示按下回车键,则下面for语句执行后

20、k的值是 5 。for(k=0;(c=getchar()!=n;k+); 16.下述程序段的运行结果是 2,1,2 。int a=1,b=2, c=3, t;while (abc) t=a; a=b; b=t; c-;printf(“%d,%d,%d”,a,b,c);17.执行下面的程序段后,m的值是 30 。int m=1,n=325;dom*=n%10;n/=10;while(n);18.下面程序的功能是求1100之间能同时被3和5整除的数,以8个数为一行的形式输出,将程序补充完整。int main( )int n,j=0; for(n=1;n=100;n+) if (n%3!=0&n%5

21、!=0) continue; printf(%6d,n); j+; if ( j%8=0 ) printf(n); printf( n j=%dn,j);return 0;三、程序阅读,写出程序运行结果。1.int main()int a=1,b=3,c=5,d=4,x;if (ab)if (cd) x=1;else if (ac) if (b0) case 1: switch (b0) case 1: printf(); break ; case 2: printf(!); break ; case 0: switch (c=5) case 1: printf(*) ; break ; ca

22、se 2: printf(#) ; break ; default : printf(#) ; break ; default : printf(&);printf(n);return 0;输出:*&3.int main ( )int x,y;for (x=1,y=1 ; x10) break; if (y%3=1) y+=3 ; continue ; y-=5;printf(%d,%dn,y,x);return 0;输出:13,54.找寻两个数的最小公倍数。int main ( )int x,y,z,t; scanf(%d,%d,&x,&y); if(xy)t=x;x=y;y=t; z=x;

23、 doif(z%x=0&z%y=0) break; else z+;while(1);printf(gbs=%dn,z);return 0;键盘输入数据:5,8输出: gbs=405.int main( )int i,j; for (i=1; i=3; i+) for (j=1; j=i; j+) printf( ); for (j=1;j=7-2*i;j+) printf(*); printf(n); return 0;输出: * * *四、编程题1编程实现,键盘输入4个整数a,b,c,d,输出其中的最小数。解:#includeint main() int a,b,c,d,s; printf(请输入个数字); scanf(%d%d%d%d,&a,&b,&c,&d); if(ab) s=b; else s=a; if(sc)s=c; if(sd)s=d; printf(最小是:%d,s); return 0;2编程实现,键盘输入3个整数a,b,c,按照由小到大的顺序输出这三个整数。解:#includeint main() int a,b,c,s; scanf(%d%d%d,&a,&b,&c); if(ab) s=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2