第3章习题参考答案.docx
- 文档编号:9330770
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:26
- 大小:31.84KB
第3章习题参考答案.docx
《第3章习题参考答案.docx》由会员分享,可在线阅读,更多相关《第3章习题参考答案.docx(26页珍藏版)》请在冰点文库上搜索。
第3章习题参考答案
第3章程序设计初步
习题参考答案
1、(略)
2、解
#include
#include
usingnamespacestd;
constfloatpi=3.1415926;//也可定义为符号#definepi3.1415926
voidmain()
{floath,r,l,s,sq,vq,vz;
cout<<"pleaseenterr,h:
";
cin>>r>>h;
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=3.0/4.0*pi*r*r*r;
vz=pi*r*r*h;
cout< : fixed)< : right) < (2); cout<<"l="< cout<<"s="< cout<<"sq="< cout<<"vq="< cout<<"vz="< } 3、输入一个华氏温度,要求输出摄氏温度。 公式为C= (F-32),输出要有文字说明,取两位小数。 解: #include #include voidmain() {floatc,f; cout<<"请输入一个华氏温度: "; cin>>f; c=5.0/9.0*(f-32);//注意5和9要用实型表示,否则5/9值为0 cout< : fixed)< (2)<<"摄氏温度为: "< } 4、编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和cout语句输出这两个字符。 并思考以下问题: (1)变量c1,c2应定义为字符型或整型? 抑或二者皆可? (2)要求输出c1和c2值的ASCII码,应如何处理? 解: #include usingnamespacestd; voidmain() {charc1,c2;//可定义为int cout<<"请输入两个字符c1,c2: "; c1=getchar();//将输入的第一个字符赋给c1 c2=getchar();//将输入的第二个字符赋给c2 cout<<"用putchar函数输出结果为: "; putchar(c1); putchar(44); putchar(c2); putchar('\n'); cout<<"用cout语句输出结果为: "; cout< } 回答思考的问题: (1)c1和c2应定义为字符型。 若定义为整型,则用putchar函数时输出的是字符,而用上述的cout语句时输出的是a和b的ASCII码。 (2)若想输出a和b的ASCII码,可以将a、b定义为整型,并且用cout语句输出a,b即可。 5、整型变量与字符变量是否在任何情况下都可以互相代替? 如: charc1,c2; 与intc1,c2;是否无条件等价? 答: 字符数据与整型数据只是在一定条件下可以通用,具体包括以下几种: (1)将一个整数一个字符型变量。 (2)将一个字符赋给一个整型变量 (3)字符数据与整型数据可以混合运算。 (4)在调用函数时函数的实参向形参传值,字符数据与整型数据之间可以通用。 但不是任何情况下二者都可以通用。 一是字符变量占一个字节,而整型占四个字节,整数超过255则不能转换。 二是用cout语句输出时是按类型进行输出的。 6、答: (略) 7、答: 在求一个逻辑表达式时,若结果值为“真”,则在C++中以1表示;若其值为“假”,则以0表示。 但在判断一个逻辑量的值时,以0代表“真”,以非0代表“假”。 8、 #include usingnamespacestd; intmain() {inta=3,b=4,c=5,x,y; cout<<(a+b>c&&b==c)< cout<<(a||b+c&&b-c)< cout<<(! (a>b)&&! c||1)< cout<<(! (x=a)&&(y=b)&&0)< cout<<(! (a+b)+c-1&&b+c/2)< } 结果为: (1)0 (2)1(3)1(4)0(5)1 9、法一 #include usingnamespacestd; intmain() {inta,b,c,max; cout<<"pleaseenterthreeintegernumbers: "; cin>>a>>b>>c; max=a; if(max if(max cout<<"max="< } 法二: #include usingnamespacestd; intmain() {inta,b,c,temp,max; cout<<"pleaseenterthreeintegernumbers: "; cin>>a>>b>>c; temp=(a>b)? a: b;/*将a和b中的大者存入temp中*/ max=(temp>c)? temp: c;/*将a和b中的大者与c比较,最大者存入max*/ cout<<"max="< } 10、 #include usingnamespacestd; intmain() {intx,y; cout<<"enterx: "; cin>>x; if(x<1)y=x; elseif(x<10)y=2*x-1; elsey=3*x-11; cout<<"x="< } 11、 #include usingnamespacestd; voidmain() {floatscore; chargrade; cout<<"pleaseenterscoreofstudent: "; cin>>score; while(score>100||score<0) {cout<<"dataerror,enterdataagain."; cin>>score; } switch(int(score/10)) {case10: case9: grade='A';break; case8: grade='B';break; case7: grade='C';break; case6: grade='D';break; default: grade='E'; } cout<<"scoreis"< } 12、给出一个不多于5位数的正整数,要求: ①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,如原数是123,应输出321。 解答一: #include usingnamespacestd; voidmain(){ longn; inta,b,c,d,e; cin>>n; a=n/10000; b=n%10000/1000; c=n%1000/100; d=n%100/10; e=n%10; if(a! =0) {cout<<"这是一个五位数! "; cout<<"这五位数字是: "< cout<<"这五位数字逆序是: "< } elseif(b! =0) {cout<<"这是一个四位数! "; cout<<"这四位数字是: "< cout<<"这四位数字逆序是: "< } elseif(c! =0) {cout<<"这是一个三位数! "; cout<<"这三位数字是: "< cout<<"这三位数字逆序是: "< } elseif(d! =0) {cout<<"这是一个两位数! "; cout<<"这两位数字是: "< cout<<"这两位数字逆序是: "< } else {cout<<"这是一个一位数! "; cout<<"这一位数字是: "< } } 解答二: #include usingnamespacestd; intmain() {longintnum; intindiv,ten,hundred,thousand,ten_thousand,place; /*分别代表个位,十位,百位,千位,万位和位数*/ cout<<"enteraninteger(0~99999): "; cin>>num; if(num>9999)place=5; elseif(num>999)place=4; elseif(num>99)place=3; elseif(num>9)place=2; elseplace=1; cout<<"place="< //计算各位数字 ten_thousand=num/10000; thousand=(int)(num-ten_thousand*10000)/1000; hundred=(int)(num-ten_thousand*10000-thousand*1000)/100; ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); cout<<"originalorder: "; switch(place) {case5: cout< cout<<"reverseorder: "; cout< break; case4: cout< cout<<"reverseorder: "; cout< break; case3: cout< cout<<"reverseorder: "; cout< break; case2: cout< cout<<"reverseorder: "; cout< break; case1: cout< cout<<"reverseorder: "; cout< break; } return0; } 13、 (1) #include usingnamespacestd; voidmain() {longi;//i为利润 floatbonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1;//利润为10万元时的奖金 bon2=bon1+100000*0.075;//利润为20万元时的奖金 bon4=bon2+100000*0.05;//利润为40万元时的奖金 bon6=bon4+100000*0.03;//利润为60万元时的奖金 bon10=bon6+400000*0.015;//利润为100万元时的奖金 cout<<"enteri: "; cin>>i; if(i<=100000) bonus=i*0.1;//利润在10万元以内按10%提成奖金 elseif(i<=200000) bonus=bon1+(i-100000)*0.075;//利润在10万元至20万时的奖金 elseif(i<=400000) bonus=bon2+(i-200000)*0.05;//利润在20万元至40万时的奖金 elseif(i<=600000) bonus=bon4+(i-400000)*0.03;//利润在40万元至60万时的奖金 elseif(i<=1000000) bonus=bon6+(i-600000)*0.015;//利润在60万元至100万时的奖金 else bonus=bon10+(i-1000000)*0.01;//利润在100万元以上时的奖金 cout<<"bonus="< } (2) #include usingnamespacestd; voidmain() {longi; floatbonus,bon1,bon2,bon4,bon6,bon10; intc; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; cout<<"enteri: "; cin>>i; c=i/100000; if(c>10)c=10; switch(c) {case0: bonus=i*0.1;break; case1: bonus=bon1+(i-100000)*0.075;break; case2: case3: bonus=bon2+(i-200000)*0.05;break; case4: case5: bonus=bon4+(i-400000)*0.03;break; case6: case7: case8: case9: bonus=bon6+(i-600000)*0.015;break; case10: bonus=bon10+(i-1000000)*0.01; } cout<<"bonus="< } 14、输入4个整数,要求按由小到大的顺序输出。 #include usingnamespacestd; voidmain() {intt,a,b,c,d; cout<<"enterfournumbers: "; cin>>a>>b>>c>>d; cout<<"a="< if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} cout<<"thesortedsequence:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 参考答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)