C语言第三次作业_第1页
C语言第三次作业_第2页
C语言第三次作业_第3页
C语言第三次作业_第4页
C语言第三次作业_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 (0<repeat<10),做repeat 次下列运算: 输入三条边a, b, c,如果能构成一个三角形,输出面积area 和周长perimeter

2、(保留2 位小数);否则,输出“These sides do not correspond to a valid triangle”。程序代码:#include<stdio.h>#include<math.h>void 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=(a>b)?a:b;p=(a<b)?a:b;q=(

3、t>c)?t:c;u=(t<c)?t:c;perimeter=a+b+c;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);if(p+u>q&&q-p<u)printf("%.2f,%.2fn",perimeter,area);elseprintf("These sides do not correspond to a valid trianglen");i=i+1;while(i<=repeat);2. 竖式打印 键盘输入两个两位正整数a,b ( 11 < = a,b

4、 < = 99,且a和b都不包含数字0 ),在屏幕上输出a与b相乘的竖式。注意尽量按照样例的格式进行输出。 样例:输入输出25 12 25* 12- 50 25- 300程序代码:#include<stdio.h>#include<math.h>void 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("%5d

5、n",b);printf("-n");printf("%6dn%5dn",m,n);printf("-n");printf("%6dn",k);3. 铅笔工厂在铅笔工厂里,一支铅笔要经过下列工序:首先在一台机器中喷上彩漆,随后在另一台机器中喷上清漆。遗憾的是这两台机器都有一些毛病。上彩漆的机器在每处理n支铅笔后就“罢工”一次(也就是下一支铅笔将不被喷上彩漆),而上清漆机器在处理m支铅笔后“罢工”一次。于是这所工厂出产四种铅笔,一种是成品铅笔,一种是只上过彩漆的铅笔,一种是只上过清漆的铅笔,最后一种是没有上

6、过任何漆的铅笔。请编写程序,对给定的n, m 和 k (被处理的铅笔总数),计算四种铅笔的数量。例如,n=3, m=5 以及k=17,那么铅笔的处理情况如下图:  1234567891011121314151617彩漆××××清漆××17支铅笔中,有12支是成品。而第12支是什么漆也没上的;第6支只上了彩漆,还有3支只上了清漆。输入:仅一行,三个整数 n, m 和 k。0 < n < 106, 0 < m < 106, 0 < k < 109。输出:在一行中依次输出下列4个数:a) 铅笔成

7、品数。b) 没被上漆的铅笔数。 c) 上过彩漆而没上清漆的铅笔数。 d) 上过清漆而没上彩漆的铅笔数。样例1输入输出3 5 1712 1 1 3样例2输入输出999999 999999 999999999999999000 999 0 0程序代码:#include<stdio.h>#include<math.h>void 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!

8、=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个小时/天,多出的加班时间不给加班费。(本题暂规定即使是周末、节假日加班也不能超过6小时;2月份假设全按照28天计算)。请编程完成如下的功能。输入一个正整数repeat (0<repeat<10),做

9、repeat 次下列运算:由键盘输入月份数,某个工人的当月工作总时间,计算并打印此工人该月的工资。程序代码:#include<stdio.h>void 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=1|month=3|month=5|month=7|month=8|month=1

10、0|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. 个人所得税按照国家关于中华人民共和国个人所得税法实施条例的规定,我国公民个人所得税税率(工资、薪金所得

11、适用)如下表:个人所得税税率表一(工资、薪金所得适用) 级数全月应纳税所得额税率()1不超过1500元的32超过1500元至4500元的部分103超过4500元至9000元的部分204 超过9000元至35000元的部分255超过35000元至55000元的部分306超过55000元至80000元的部分357超过80000元的部分45(注:本表所称全月应纳税所得额是指以每月收入额减除费用三千五百元后的余额,即通常所说的个税起征点。)要求编写以下的程序:输入一个正整数repeat (0<repeat<10),做repeat 次下列运算:输入一个职工的月薪salar

12、y,输出应交的个人所得税tax(保留2 位小数)。程序代码:#include<stdio.h>void 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(0<a&&a<=1500)tax=a*0.03;else if(1500<a&&a<=4500)tax=(a-1500)*0.

13、1+1500*0.03;else if(4500<a&&a<=9000)tax=(a-4500)*0.2+3000*0.1+1500*0.03;else if(9000<a&&a<=35000)tax=(a-9000)*0.25+4500*0.2+3000*0.1+1500*0.03;else if(35000<a&&a<=55000)tax=(a-35000)*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;else if(55000<a&&a<

14、;=80000)tax=(a-55000)*0.35+20000*0.3+26000*0.25+4500*0.2+3000*0.1+1500*0.03;else if(80000<a)tax=(a-80000)*0.45+25000*0.35+20000*0.3+26000*0.25+4500*0.2+3000*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)!的值,直到计算到超出数有效表示范围为止。请输出上述表达式

15、的值,以及这时n的值。#include<stdio.h>void 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(b<=2147483647&&b>0);n=(m+1)/2;printf("a=%f,n=%dn",a,n);错误原因一直减没有加7. 数列求和 N为自然数,a为19之间的数字,编程计算a+aa+aaa+aaa(n个a)的值,要求n和a由

16、用户从键盘输入。并请输出上述表达式的结果值。 程序代码:#include<stdio.h>#include<math.h>void main()int i=1,a,b,n,t;scanf("%d,%d",&n,&a);t=b=a;while(i<n)b=b+a*pow(10,i);t=t+b;i=i+1;printf("the result is %dn",t);8. 素数求和输入2 个正整数m 和n(1<=m,n<=500),统计并输出m 和n 之间的素数的个数以及这些素数的和(素数就是只能被1

17、 和自身整除的正整数,1 不是素数,2 是素数)。程序代码:#include<stdio.h>#include<math.h>void main()int m,n,i,k,t=0,s=0;scanf("%d,%d",&m,&n);dok=sqrt(m);for(i=2;i<=k;i+)if(m%i=0)break;if(i>k)t=t+1;s=s+m;else;m=m+1;while(m<=n);printf("number=%d,sum=%dn",t,s);错误原因:1不是素数,当m=1时应该都

18、减去19. 数字金字塔数字金字塔是由1到N的数字构成的一个类似金字塔形状的数阵。其中,第一层由1个数字1构成,第二层由2个数字2构成,第三层由3个数字3构成(每层均比上一层多1个数字,且每一层的数字之间都有一个空格格开)例如,当N=4时,一个4层的数字金字塔如下:1223334444为了方便描述,上图中的“”表示空格。请你编写程序,对于给定的N,输出相应的数字金字塔。输入:数据从键盘输入。输入只有一行一个整数N(1 < N < 10)。输出:输出到屏幕。有N行,为一个对应的数字金字塔。样例输入3样例输出 1 2 23 3 3程序代码:#include<stdio.h>v

19、oid main()int n,i,p,q;scanf("%d",&n);for(i=1;i<=n;i+)for(p=1;p<=n-i;p+)printf(" ");for(q=1;q<=i;q+)printf("%d ",i);printf("n");10. 谷场里的老鼠与猫有4座圆柱形谷仓,谷仓底面圆心位置分别为(5,0),(-5,0),(0,-5),(0,5),谷仓底面直径为5米,谷仓高度为10米。见下图今有一只猫和一只老鼠,如果猫只会沿谷仓壁垂直爬上爬下,在地面上左右平移或者前后平

20、移爬行(注意:本题中假设猫不会走斜线,谷仓下面可以通行)。编程实现以下的功能:输入老鼠与猫的坐标位置;输出猫爬行到老鼠位置的最短路径距离。程序代码:#include <stdio.h>void main()float a1,a2,b1,b2,c1,c2,s;float f(float x,float y);printf("Please input the location of the mouse:");scanf("%f,%f,%f",&a1,&b1,&c1);printf("Please input the location of the cat:");scanf("%f,%f,%f",&a2,&b2,&c2);if(a1=a2&&b1=b2)s=f(c1,c2);elses=f(a1,a2)+f(b1,b2)+c1+c2;printf("The shortest distance is %f.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论