程序设计基础-c语言-第三章程序结构-教材习题答案-科学

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页程序设计基础-C语言(科学出版社教材)第三章-程序结构教材习题答案1.0编写程序使整形变量:a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:x=1.2,y=2.4,z=3.6;无符号型变量:u=5127486,n=128765,字符型变量:c1=’a’,c2=’b’;#includestdio.hvoidmain(){inta,b,c,p,q;floatx,y,z;unsignedintu,n;charc1,c2;a=3;b=4;c=5;p=0xfffe;q=0xffff;x=1.2;y=2.4;z=-3.6;u=5127486;n=128765;c1='a';c2='b';printf(a=%db=%dc=%d\n,a,b,c);printf(p=%#xq=%#x\n,p,q);printf(x=%f,y=%f,z=%f\n,x,y,z);第2页printf(x+y=%.2fy+z=%.2fx+z=%.2f\n,x+y,y+z,x+z);printf(u=%8un=%8u\n,u,n);printf(c1='%c'or%d\n,c1,c1);printf(c2='%c'or%d\n,c2,c2);}2.0读入三个双精度数,求出它们的平均值并保留此平均值小数点后二位,最后输出结果。#includestdio.hvoidmain(){doublea,b,c,d;printf(请输入三个双精度数:);scanf(%lf,%lf,%lf,&a,&b,&c);d=(a+b+c)/3;printf(d=%.2lf,d);}3.0编写一个程序,要求输入三个整数值a,b,c,把c中的值赋给b,把b中的值赋给a,把a中的值赋给c,最后输出a,b,c.第3页#includestdio.hvoidmain(){inta,b,c,t;printf(输入三个整数值:);scanf(%d,%d,%d,&a,&b,&c);t=a;a=b;b=c;c=t;printf(a=%d,b=%d,c=%d\n,a,b,c);}4.0编写一个程序,要求输入一个华氏温度,输出对于的摄氏温度。华氏温度与摄氏温度转换公式为:c=5/9*(F-32).结果保留二位小数。#includestdio.hvoidmain(){floatF;第4页floatC;printf(请输入一个华氏温度F=);scanf(%f,&F);C=5.0/9.0*(F-32.0);printf(对应的摄氏温度C=%.2f\n,C);}5.0编写一个程序,要求输入一个三位数,正确的分量出它的个位,十位,百位,并在屏幕显示出来#includestdio.hvoidmain(){inta,a100,a10,a1;printf(请输入一个三位整数:);scanf(%d,&a);if(100=a&&a=999){a100=a/100;a=a%100;a10=a/10;a1=a%10;第5页printf(百位数是%d,十位数是%d,个位数是%d\n,a100,a10,a1);}else{printf(输入的数据不是一个3位整数!\n);}}6.0编写一个程序,输入一个整数,输出它是奇数还是偶数#includestdio.hvoidmain(){inta,b;printf(请输入一个整数:);scanf(%d,&a);b=a%2;if(b==0)printf(偶数a=%d\n,a);elseprintf(奇数a=%d\n,a);}第6页7.0x(x1)y2x1(1x10)3x11(x10)编写程序,输入x,对应输出Y值。#includestdio.hvoidmain(){intx,y;printf(输入x值:);scanf(%d,&x);if(x1){y=x;}else{if(1=x&&x10)y=2*x-1;elsey=3*x-11;}printf(%d\n,y);}8.0编写一个程序,要求由键盘输入3个数,判断它们是否能构第7页成三角形的三边。若能,请判断构成的是等腰,等边还是普通三角形。#includestdio.h#includemath.hvoidmain(){unsignedinti_a,i_b,i_c;floatf_s;printf(请输入3个数作为三角形的三条边,中间用空格隔开:);scanf(%u%u%u,&i_a,&i_b,&i_c);if((i_a+i_b)i_c&&(i_a+i_c)i_b&&(i_c+i_b)i_a){f_s=((float)(i_a+i_b+i_c))/2;f_s=sqrt(f_s*(f_s-i_a)*(f_s-i_b)*(f_s-i_c));printf(该3个数可构成一个三角形,其面积是%.2f\n,f_s);if((i_a=i_b)&&(i_a=i_c)){printf(该三角形是等边三角形\n);}else{if((i_a=i_b)||(i_a=i_c)||(i_b=i_c))第8页{printf(该三角形是等腰三角形\n);}else{printf(该三角形是一般三角形\n);}}}else{printf(该3个数不能构成一个三角形\n);}}9.0编写程序,输入某年某月,求该月有多少天。#includestdio.hvoidmain(){unsignedinti_Year,i_Month;chari_Days;printf(请输入年月,中间用空格隔开:);scanf(%u%u,&i_Year,&i_Month);if(1=i_Month&&i_Month=12)第9页{switch(i_Month){case1:;case3:;case5:;case7:;case8:;case10:;case12:i_Days=31;break;case4:;case6:;case9:;case11:i_Days=30;break;case2:if(i_Year%4==0&&i_Year%100!=0||i_Year%400==0)i_Days=29;elsei_Days=28;}printf(%d年%d月是%d天\n,i_Year,i_Month,i_Days);第10页}else{printf(月只能是1~12,输入错误,无法计算);}}10.0编写程序,对给定的一个百分制成绩,输出对于的五分制成绩,设90分以上为A,80到89分为B,70到79分为C,60到69为D,60分以下为E,用IF和switch语句分部实现。#includestdio.hvoidmain(){inti_a;//成绩inti_grade;//成绩等级printf(请输入成绩:);scanf(%d,&i_a);printf(用if语句判断的等级是:);if(i_a=90){printf(A);第11页}else{if(80=i_a&&i_a=89){printf(B);}else{if(70=i_a&&i_a=79){printf(C);}else{if(60=i_a&&i_a=69){printf(D);}else{printf(E);}}}}printf(\n);printf(用switch语句判断的等级是:);第12页i_grade=i_a/10;switch(i_a/10){case10:;case9:printf(A);break;case8:printf(B);break;case7:printf(C);break;case6:printf(D);break;default:printf(E);}printf(\n);}11循环输入若干个数据,以-1表示输入结束,计算输入的这些数据平均值。#includestdio.hvoidmain()第13页{inta;//记录当前输入的数intnum;//记录当前输入的数据个数intsum;//记录当前所有数据的和floataverage;//记录平均值//赋初值sum=0;num=0;//输入开始printf(输入一组整型数据,如果输入的数据是-1,则说明该组数据输入完成,下面开始输入\n);scanf(%d,&a);while(a!=-1){num++;sum=sum+a;scanf(%d,&a);}//输入结束//计算和输出if(num==0)第14页{printf(没有输入数据,无平均数!);}else{average=(float)sum/(float)num;//强制int转换为float,然后计算,如果不要强制转换,即average=sum/num,你可试一试,看结果有什么不同printf(输入了%d个数据,其平均数是:%.2f\n,num,average);}}12编程计算1+2+3+4+……n的值超过500的第一个和值为多少;n的值为多少。#includestdio.hvoidmain(){inti_n;inti_sum;//记录和//每行最多输出10个水仙花数i_sum=0;第15页i_n=0;while(i_sum=500){i_n++;i_sum=i_sum+i_n;}printf(1+2+3+4+...+n的值超过500的第1个和值=%d,n=%d\n,i_sum,i_n);}13计算出公式1!+2!+3!+……10!的值#includestdio.hvoidmain(){inti_a,i_b;inti_sum;//记录和inti_jc;//记录某个数的阶乘i_sum=0;for(i_a=1;i_a=10;i_a++){//计算某个数i_a的阶乘i_jc=1;第16页for(i_b=1;i_b=i_a;i_b++){i_jc=i_jc*i_b;}//阶乘计算完毕i_sum=i_sum+i_jc;//计算和}printf(1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=%d,i_sum);}14输出所有的水仙花数,所谓的水仙花数,是指一个三位数,其各位数字的立方和等于它本身。列如153是一个水仙花数,因为153=1^3+5^3+3^3.解法一#includestdio.hvoidmain(){inti_100,i_10,i_1;//记录3位数的各位数字inti_num;//记录水仙花数的个数//每行最多输出10个水仙花数i_num=0;for(i_100=1;i_100=9;i_100++)第17页{for(i_10=0;i_10=9;i_10++){for(i_1=0;i_1=9;i_1++)if((i_100*100+i_10*10+i_1)==(i_100*i_100*i_100+i_10*i_10*i_10+i_1*i_1*i_1)){//此时形成了一个水仙花数printf(%d,i_100*100+i_10*10+i_1);i_num++;if((i_num%10)==0){//已输出了10个倍数的水仙花数,下一个另起一行printf(\n);}}}}printf(\n共有%d个水仙花数,i_num);}15利用循环,在屏幕上输出如下图案第18页#includestdio.hvoidmain(){inti_Rows;//输出上三角*的行数inti_Row;//当前输出的第几行inti_Blanks;//第i_Row行需输出的空格数inti_Blank;//第i_Row行当前输出的第几个空格inti_Starts;//第i_Row行需输出的*个数inti_Start;//第i_Row行当前输出的第几个*printf(请输入上三角的行数:);scanf(%d,&i_Rows);//输出上三角for(i_Row=1;i_Row=i_Rows;i_Row++){i_Blanks=i_Rows-i_Row;//计算第i_Row需输出的空格数i_Starts=(i_Row-1)*2+1;//计算第i_Row需输出的*数//输出

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功