《C语言第三次作业.doc》由会员分享,可在线阅读,更多相关《C语言第三次作业.doc(16页珍藏版)》请在金锄头文库上搜索。
1、第三次作业:程序控制语句(顺叙、选择、循环)注:建议同学们在深入理解顺序、选择、循环三种控制语句的基础上再做本次作业,过程可能会更顺利,效果可能会更好一些。1. 三角形的面积和周长对于一个三角形,设它的三条边分别为a、b、c,三角形的周长、面积计算公式分别为:l Perimeter= a+b+cl aere*area = s(s-a)(s-b)(s-c),其中:s = (a+b+c)/2要求编程实现以下功能:输入一个正整数repeat (0repeat10),做repeat 次下列运算: 输入三条边a, b, c,如果能构成一个三角形,输出面积area 和周长perimeter(保留2 位小数
2、);否则,输出“These sides do not correspond to a valid triangle”。程序代码:#include#includevoid main()int a,b,c,s,repeat,p,t,q,u,i;float perimeter,area;i=1;scanf(%d,&repeat);doscanf(%d,%d,%d,&a,&b,&c);t=(ab)?a:b;p=(ac)?t:c;u=(tq&q-pu)printf(%.2f,%.2fn,perimeter,area);elseprintf(These sides do not correspond to
3、 a valid trianglen);i=i+1;while(i=repeat);2. 竖式打印 键盘输入两个两位正整数a,b ( 11 = a,b = 99,且a和b都不包含数字0 ),在屏幕上输出a与b相乘的竖式。注意尽量按照样例的格式进行输出。 样例:输入输出25 12 25* 12- 50 25- 300程序代码:#include#includevoid main()int a,b,m,n,k;scanf(%d %d,&a,&b);m=(b%10)*a;n=floor(b/10)*a;k=a*b;printf(%6dn,a);printf(*);printf(%5dn,b);prin
4、tf(-n);printf(%6dn%5dn,m,n);printf(-n);printf(%6dn,k);3. 铅笔工厂在铅笔工厂里,一支铅笔要经过下列工序:首先在一台机器中喷上彩漆,随后在另一台机器中喷上清漆。遗憾的是这两台机器都有一些毛病。上彩漆的机器在每处理n支铅笔后就“罢工”一次(也就是下一支铅笔将不被喷上彩漆),而上清漆机器在处理m支铅笔后“罢工”一次。于是这所工厂出产四种铅笔,一种是成品铅笔,一种是只上过彩漆的铅笔,一种是只上过清漆的铅笔,最后一种是没有上过任何漆的铅笔。请编写程序,对给定的n, m 和 k (被处理的铅笔总数),计算四种铅笔的数量。例如,n=3, m=5 以及k
5、=17,那么铅笔的处理情况如下图: 1234567891011121314151617彩漆清漆17支铅笔中,有12支是成品。而第12支是什么漆也没上的;第6支只上了彩漆,还有3支只上了清漆。输入:仅一行,三个整数 n, m 和 k。0 n 106, 0 m 106, 0 k 109。输出:在一行中依次输出下列4个数:a) 铅笔成品数。b) 没被上漆的铅笔数。 c) 上过彩漆而没上清漆的铅笔数。 d) 上过清漆而没上彩漆的铅笔数。样例1输入输出3 5 1712 1 1 3样例2输入输出999999 999999 999999999999999000 999 0 0程序代码:#include#in
6、cludevoid main()int m,n,k,a,b,c,d,p,q,i;scanf(%d,%d,%d,&n,&m,&k);i=n-1;doi=i+1;p=i%(n+1);q=i%(m+1);while(p!=0|q!=0);b=floor(k/i);c=floor(k/(m+1)-b;d=floor(k/(n+1)-b;a=k-(b+c+d);printf(%d %d %d %dn,a,b,c,d);4. 计算工资某工厂规定一个工人工作时间每个月160小时,每小时工资为5元,如果加班的话,每小时加班费为4元;但是单位同时又规定,一个工人每月加班时间平均计算下来最多不能超过6个小时/天,
7、多出的加班时间不给加班费。(本题暂规定即使是周末、节假日加班也不能超过6小时;2月份假设全按照28天计算)。请编程完成如下的功能。输入一个正整数repeat (0repeat10),做repeat 次下列运算:由键盘输入月份数,某个工人的当月工作总时间,计算并打印此工人该月的工资。程序代码:#includevoid main()int time,worktime=160,overtime,month,days,pay,repeat,i=1;scanf(%d,&repeat);doscanf(%d,%d,&month,&time);overtime=time-worktime;if(month=
8、1|month=3|month=5|month=7|month=8|month=10|month=12)days=31;else if(month=4|month=6|month=9|month=11)days=30;else if(month=2)days=28;if(overtime=6*days)pay=worktime*5+overtime*4;elsepay=worktime*5+6*days*4;printf(%dn,pay);i=i+1;while(i=repeat);错误原因没有考虑到工作时间小于160小时的情况5. 个人所得税按照国家关于中华人民共和国个人所得税法实施条例的规
9、定,我国公民个人所得税税率(工资、薪金所得适用)如下表:个人所得税税率表一(工资、薪金所得适用)级数全月应纳税所得额税率()1不超过1500元的32超过1500元至4500元的部分103超过4500元至9000元的部分204超过9000元至35000元的部分255超过35000元至55000元的部分306超过55000元至80000元的部分357超过80000元的部分45(注:本表所称全月应纳税所得额是指以每月收入额减除费用三千五百元后的余额,即通常所说的个税起征点。)要求编写以下的程序:输入一个正整数repeat (0repeat10),做repeat 次下列运算:输入一个职工的月薪sala
10、ry,输出应交的个人所得税tax(保留2 位小数)。程序代码:#includevoid main()int salary,a,repeat,i;float tax;i=1;scanf(%d,&repeat);doscanf(%d,&salary);a=salary-3500;if(a=0)tax=0;else if(0a&a=1500)tax=a*0.03;else if(1500a&a=4500)tax=(a-1500)*0.1+1500*0.03;else if(4500a&a=9000)tax=(a-4500)*0.2+3000*0.1+1500*0.03;else if(9000a&a
11、=35000)tax=(a-9000)*0.25+4500*0.2+3000*0.1+1500*0.03;else if(35000a&a=55000)tax=(a-35000)*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;else if(55000a&a=80000)tax=(a-55000)*0.35+20000*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;else if(80000a)tax=(a-80000)*0.45+25000*0.35+20000*0.3+26000*0.25+4500*0.2+3
12、000*0.1+1500*0.03;printf(%.2fn,tax);i=i+1;while(i=repeat);6. 极限求值 编程计算:1/1!-1/3!+1/5!-1/7!+1/(2n-1)!的值,直到计算到超出数有效表示范围为止。请输出上述表达式的值,以及这时n的值。#includevoid main()int b=1,m=1,n;float a=1,t;dom=m+1;b*=m;m=m+1;b*=m;t=-1./b;a=a+t;printf(b=%d,m=%d,a=%dn,b,m,a);while(b0);n=(m+1)/2;printf(a=%f,n=%dn,a,n);错误原因一直减没有加7. 数列求和 N为自然数,a为19之间的数字,编程计算a+aa+aaa+aaa(n个a)的值,要求n和a由用户从键盘输入。并请输出上述表达式的结果值。 程序代码:#include#includevoid main()int i=1,a,b,n,t;sc