c语言程序设计习题答案.pdf
《c语言程序设计习题答案.pdf》由会员分享,可在线阅读,更多相关《c语言程序设计习题答案.pdf(119页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语言程序设计习题答案第 一 章 c 语言概述1.5 请参照本章例题,编写一个C 程序,输出以下信息:V er y Go o d!解:m ian()p r in t f(a*n);p r in t f(n);p r in t f(V er y Go o d!nw);p r in t f(n);p r in t f(*w);1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。解:m ian()in t a,b,c,m ax;p r in t f(“请输入三个数 a,b,c:n);s can f(%d,%d,%d”,&a,&b,&c);m ax=a;if(m ax b)m ax=b;i
2、f(m ax c)m ax=c;p r in t f(最大数为:“d”,m ax);)第三章数据类型,运算符和表达式3.6 写出以下程序运行的结果。m ain()char cl=a,c2=b,c3=c,c4=101,c5=116;p r in t f(r ta%cb%ct c%ct abcnw,cl,c2,c3);p r in t f(at b%c%c”,c4,c5);解:aa U bb U L4 M cc U U M U M U abcAUN3.7 要将“C hin a译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母A”后面第4 个字母是E .代替A 。因此,C h
3、in a”应译为 Glm r e。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,C 、X、i 、n 、a ,经过运算,使 cl、c2、c3、c4、c5分别变为G,、m、,r 、e ,并输出。解:t t in clu de m ain O char cl=C ,c2=h,c3=i,c4=n ,c5=a ;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;p r in t f(“密码是%c%c%c%c%cn”,cl,c2,c3,c4,c5);运行结果:密码是Glm r e3.9 求下面算术表达式的值。(1)x+a%3*(in t)(x+y)%2/4设 x=2
4、.5,a=7,y=4.7(2)(flo at)(a+b)/2+(in t)x%(in t)y设 a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。m ain()in t i,j,m,n;i=8;j=10;m=+i;n=j+;p r in t f(%d,%d,%d,%d”,i,j,m,n);解:9,11,9,103.1 2写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。(1)a+=a(2)a=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n 的值等于 5(6)a+=a-=a*=a解:24(2)10(3)60(4)0
5、(5)0(6)0第四章 简单的c程序设计顺序程序设计4.4 若 a=3,b=4,c=5,x=l.2,y=2.4,z=3.6,u=51274,n=128765,cl=,a,,c2=b,。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。a=3 b=4 c=5x=l.200000,y=2.400000,z=-3.600000 x+y=_3.600_ y+z=T.20_z+x=2.40cl=a_or_9 7(ASCII)c2=b_or_9 8(ASCII)main()int a=3,b=4,c=5;long int u=51274,n=128765;float x=l.2,y=2.
6、4,z=3.6;char cl=a,c2=b ;printf(a=%2d b=%2d c=%2dn”,a,b,c);printf(x=%f,y=%f,z=%fn”,x,y,z);printf(x+y=%5.2f y+z=%5.2f z+x=%5.2fn”,x+y,y+z,z+x);printf(u=%61d n=%9 1dn,,u,n);printf(%s%s%d%sn,cl=a,or,cl,(ASCII)”);printf r%s%s%d%sn,c2=a*,or,c2,(ASCII)”);4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=7L 82,cl=A ,c2=a
7、 ,问在键盘上如何输入?main()(int a,b;float x,y;char clc2;scanf(a=%d_b=%d,&a,&b);scanf(_x=%f_y=%e,&x,&y);scanf(_cl=%c_c2=%c”,&cl,&c2);a=3_b=7_x=8.5_y=71.82_cl=A_c2=a4.8设圆半径r=l.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。main()flo at r,h,C l,S a,S b,V a,V b;s can f(%f,&r,&h);C l
8、=2*3.14*r;S a=3.14*r*r;S b=4*S a;V a=4*3.14*r*r*r/3;V b=S a*h;p r in t fC C l=%.2fn,C l);p r in t f(S a=%.2fn S b=%.2fn V a=%.2fn V b=%.2fn ,S a,S b,V a,V b);)4.9 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2 小数。m ain()flo at F,c;s can f(%f,&F);c=5*(F-32)/9;p r in t f(c=%.2f”,c);)4.10编程序,用 get char
9、函数读入两个字符给cl、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变 量 cl、c2应定义为字符型或整形?抑二者皆可?(2)要求输出cl和 c2值的A S C I I 码,应如何处理?用 p u t char 函数还是p r in t f函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:char cl,c2;与 in t cl,c2;是否无条件的等价?#in clu des t dio.hm ain O char cl,c2;cl=get char ();c2=get char();p u t char(cl);p u t char(?n,);p u t
10、char(c2);p u t char(,n,);)#in clu de“s t dio.hm ain()char cl,c2;cl=get char ();c2=get char();p r in t f(cl=%d c2=%dn”,cl,c2);p r in t f(cl=%c c2=%cn”,cl,c2);第五章选择结构程序设计5.1什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?解:设有一个逻辑表达式,若其结果为“真”,则以1表示;若其结果为“假”,则以0 表示。但是判断一个逻辑量的值时,以0 代表“
11、真”,以非0 代表“假”。例如3&5 的值为“真”,系统给出3&5的值为lo5.3 写出下面各逻辑表达式的值。设 a=3,b=4,c=5。(1)a+b c&b=c(2)a|b+c&b-c(3)!(a b)&!c|l(4)!(x=a)&(y=b)&0(5)!(a+b)+c_ l&b+c/2解:0M3)1015.4 有 3 个整数a、b、c,由键盘输入,输出其中最大的数。解:方法一#inclu de ma in()int a,b,c;print f(请输入3 个整数:);sca nf(%d,%d,%d,&a,&b,&c);if(a b)if(b c)print f(ma x=%d n”,c);el
12、se print f(ma x=%d n”,b);else if(a c)print f(ma x=%d n”,c);else print f(ma x=%d n”,a);方法二:使用条件表达式,可以使程序更加简明、清晰。程序如下:#inclu de ma in()int a,b,c,t emp,ma x;print f(请输入3 个整数:);sca nf(%d,%d,%d,&a,&b,&c);t emp=(a b)?a:b;/*将 a 和 b中的大者存人t emp中*/ma x=(t emp c)?t emp:c;/*将 a和 b中的大者与c 比较,取最大者*/print f(3 个整数的最
13、大数是%d n,ma x);)5.5 有一函数:写一程序,输入x 值,输出y 值。解:t t inclu de ma in()int x,y;print f(输入 x:);sca nf&x);if(x l)/*x l*/y=x;print f(x=%3 d,y=x=%d n”,x,y);else if(x 10)/*lW xTO*/y=2*xT;print f(x=%3 d,y=2*xT=%d n”,x,y);else/*x2 1O*/y=3*xTl;print f(x=%3 d,y=3*xTl=%d n”,x,y);)5.6 给一个百分制成绩,要求输出等级 A,、B,、C 、D,、E o 9
14、0 分以上为 A ,8 0 90 分为 B ,7 0 7 9 分为 C ,6 0分以下为D。解:程序如下:#inclu de ma in()floa t score;cha r gra de;print f(请输入学生成绩:);sca nf(%f”,&score);while(score 100|(score 0)print f(n输入有误,请重新输入:);sca nf(%f”,&score);)swit ch(int)(score/10)ca se 10:ca se 9:gra de=A;b rea k;ca se 8:gra de=B ;b rea k;ca se 7:gra de=C ;
15、b rea k;ca se 6:gra de=D ;b rea k;ca se 5:ca se 4:ca se 3:ca se 2:ca se 1:ca se 0:gra de=E;print f(成绩是%5.I f,相应的等级是%c。n,score,gra de);)说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int)(score/10)的作用是将(score/10)的值进行强制类型转换,得到一个整型值。5.7给定一个不多于5位的正整数,要求:求它是几位数;分别打印出每一位数字;按逆序打印出各位数字。例如原数为3 2 1,应输出12 3 o解:t t inclu de
16、ma in()long int nu m;int indiv,t en,hu ndred,t hou sa nd,t en_ t hou sa nd,pla ce;/*分别代表个位、十位、百位、千位、万位和位数*/print f(请输入一个整数(0 9 9 9 9 9);sca nf&nu m);if(nu m 9999)pla ce=5;else if(nu m 999)pla ce=4;else if(nu m 99)pla ce=3;else if(nu m 9)pla ce=2;else pla ce=l;print f(pla ce=%d n”,pla ce);t en_ t hou
17、 sa nd=nu m/10000;t hou sa nd=nu m/1000%10;hu ndre d=nu m/100%10;t en=nu m%100/10;indiv=nu m%10;swit ch(pla ce)ca se 5:print f(%d,%d,%d,%d,%d”,t en_ t hou sa nd,t hou sa nd,hu ndred,t en,indiv);print f(n反序数字为;”);print f(%d%d%d%d%d n”,indiv,t en,hu ndred,t hou sa nd,t en_ t hou sa nd);b rea k;ca se 4
18、:print f(%d,%d,%d,%d”,t hou sa nd,hu ndred,t en,indiv);print f C n反序数字为:);print f(%d%d%d%d n”,indiv,t en,hu ndred,t hou sa nd);b rea k;ca se 3:print f(%d,%d,%d”,hu ndred,t en,indiv);print f(n反序数字为:);print f(%d%d%d n”,indiv,t en,hu ndred);b rea k;ca se 2:print f%d”,t en,indiv);print f C n反序数字为:);prin
19、t f(%d%d n”,indiv,t en);b rea k;ca se 1:p r i n tf i n d i v);print f(n反序数字为:);print f(%d n,indiv);b rea k;5.8 企业发放的奖金根据利润提成。利润I 低于或等于10万元时,奖金可提成10%;利润高于1 0 万元,低 于 2 0 万 元(100000 1 W2 00000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;2 00000 IW 4 00000时,其中2 0万元仍按上述办法提成(下同),高于2 0万元的部分按5%提成;4 00000 1 6 00000时,高于
20、4 0万元的部分按3%提成;6 00000 IW 1000000时,高于6 0万的部分按1.5%提成;D1000000时,超过100万元的部分按现提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用 if语句编程序;(2)用 swit ch语句编程序。解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为 15万元,其中有10万元按10%的比例提成,另外5 万元则按7.5%提成。(1)用 i f 语句编程序。#i nc l u d e m a i n()l o ng i;f l o a t b o nu s,b o nl,b o n2,b o n4,b o n6,b o n 1
21、0;b o nl=100000*0.1;/*利润为10万元时的奖金*/b o n2=b o nl+100000*0.075;/*利润为 20 万元时的奖金*/b o n4=b o n2+200000*0.05;/*利润为 40 万元时的奖金*/b o n6=b o n4+200000*0.03;/*利润为 60 万元时的奖金*/bonl0=bon6+400000*0.015;/*利润为 100 万元时的奖金*/printf(请输入利润i:”);scanf&i);if(i=100000)bonus=i*0.1;/*利润在10万元以内按0.1提成奖金*/else if(i=200000)bonus
22、=bonl+(1-100000)*0.075;/*利润在 10 万至 20 万元时的奖金*/else if(i=400000)bonus=bon2+(i-200000)*0.05;/*利润在20万至40万元时的奖金*/else if(i=600000)bonus=bon4+(i-400000)*0.03;/*利润在40万至60万元时的奖金*/else if(i=1000000)bonus=bon6+(i-600000)*0.015;/*利润在 60 万至 100 万元时的奖金*/elsebonus=bonl0+(1-1000000)*0.01;/*利润在 100 万元以上时的奖金*/print
23、f(奖金是%10.2fn”,bonus);)此题的关键在于正确写出每一区间的奖金计算公式。例如利润在10万元至20万时,奖金应由两部分组成:利润为10万元时应得的奖金。即 100000 x 0.1;10万元以上部分应得的奖金。即(nu m-100000)x 0.075o同理,20万 40万这个区间的奖金也应由两部分组成:利润为20万元时应得的奖金,即 100000 x 0.1x 10万 x 0.075;20万元以上部分应得的奖金,即(nu m-200000)x O.05。程序中先把10万、20万、40万、60万、100万各关键点的奖金计算出来,即b o nl、b o n2、b o n4、b o
24、 n6、h o nl O;然后再加上各区间附加部分的奖金。(2)用 swi t c h 语句编程序。输入利润i,确定相应的提成等级b r a nc h根据b r a nc h 确定奖金值0 奖金=i*0.11 奖金=b o nl+(i-105)*0.0752 奖金=b o n2+(i-2*105)*0.0534 奖金=b o n4+(-4*105)*0.0356 奖金=b o n6+6-6*105)*0.01578910 奖金=b o nl 0+(i T 06)*0.01输出奖金t t i nc l u d e m a i nO l o ng i;f l o a t b o nu s,b o
25、nl,b o n2,b o n4,b o n6,b o nl O;i nt c;b o nl=100000*0.1;b o n2=b o n1+100000*0.075;b o n4=b o n2+200000*0.05;b o n6=b o n4+200000*0.03;b o n10=b o n6+400000*0.015;p r i nt f (请输入利润i:);sc a nf (%l d ,&i);c=i/100000;i f(c 10)c=10;swi t c h(c)c a se 0:b o nu s=l*0.1;b r e a k;c a se 1:b o nu s=b o nl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题 答案
限制150内