寒假作业第1-20题
第一题:输出Hello World!
#include"stdio.h"
void main()
{
printf("Hello World! \n");
}
第二题:编写程序,将华氏度转换为摄氏度。转换公式为:c = 5 * (华氏度f - 32) / 9;其中,c为摄氏度,f为华氏度
#include"stdio.h"
void main()
{
float f,c;
printf("please input the Fahrenheit :\n");
scanf("%f",&f);
c=(f-32)*5/9.0;
printf("the Celsius degree is :%.2f \n",c);
}
第三题:交互输入的四个整数,计算它们的和以及平均值,并输出,要求:平均值只保留2位小数。
#include"stdio.h"
void main()
{
int arr[4],i;
int sum=0;
float ave;
printf("please input the numbers:\n");
for(i=0;i<4;i++)
{
scanf("%d",&arr[i]);
sum+=arr[i];
}
ave=sum/4.0;
printf("the sum is %d\nthe ave is %.2f\n",sum,ave);
}
第四题:从键盘输入一个n,计算1到n的和。
#include"stdio.h"
void main()
{
int i=1,n;
int sum=0;
printf("please input the n:\n");
scanf("%d",&n);
while(i<=n)
{
sum+=i;
i++;
}
printf("the result is :%d\n",sum);
}
第五题:编写1+1/2+1/3+...+1/n计算程序
#include"stdio.h"
void main()
{
int i=1,n;
float sum=0;
printf("please input the n:\n");
scanf("%d",&n);
while(i<=n)
{
sum+=1.0/i;
i++;
}
printf("the result is %.5f\n",sum);
}
第六题:计算如下分段函数
#include"stdio.h"
void main()
{
int x,y;
printf("please input the x:\n");
scanf("x=%d",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
y=3*x-1;
printf("y=%d\n",y);
}
第七题:计算下面的分段函数,
#include"stdio.h"
void main()
{
int x;
printf("please input the x:\n");
scanf("x=%d",&x);
if(x==0)
printf("y=0\n");
else
printf("y=%f\n",1.0/x);
}
第八题:求出1-N中的所有素数
#include"stdio.h"
void main()
{
int i,j,n;
int count=0;
printf("请输入n:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
{
printf("%d\t",i);
count++;
}
}
printf("\n1~%d之间有%d个素数!!!\n",n,count);
}
第九题:判断一个数是否为"水仙花数",所谓"水仙花数"是指一个三位数其各位数字的立方和等于该数本身。
#include"stdio.h"
void main()
{
int i,j,k,n;
printf("please input the n:\n");
scanf("%d",&n);
printf("\n");
i=n/100;
j=(n-100*i)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("the %d is Narcissistic number!\n",n);
else
printf("the %d is not Narcissistic number!\n",n);
}
第十题:输出所有的"水仙花数"。所谓"水仙花数"是指这样的一个三位数:其各位数字的立方和等于该数本身。
#include"stdio.h"
void main()
{
int i,j,k,n;
printf("The Narcissistic number:\n");
printf("\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=(n-100*i)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%d\t",n);
}
printf("\n");
}
第十一题:编写一个程序输出一定范围内所有的完全数,如果一个数等于它的因子之和,则称该数为“完全数”。
#include"stdio.h"
void main()
{
int m,n;
int sum,i,j;
printf("Please enter the range [m,n]:\n");
scanf("%d%d",&m,&n);
printf("\n");
printf("the Perfect number is :\n");
for(i=m;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(i==sum)
printf("%d\t",i);
}
}
第十二题:孪生素数就是指相差2的素数对。例如:3和5,5和7,11和13......输入一个正整数n,输出n以内的所有孪生素数。
#include <stdio.h>
#include <math.h>
int main()
{
int n;
int i,j,k;
int count=0,s; //s是个标志位,如果是素数,让s=1;如果不是素数,让s=0 。
printf("请输入一个正整数N:\n");
scanf("%d",&n);
for(i=2;i+2<=n;i++ )
{
s = 1; /* 先假设i是素数 */
k = sqrt(i);
for(j=2;j<=k;j++ )
{
if(i%j==0)
{
s = 0; /* 不是素数 */
break;
}
}
if(s)
{
k = sqrt( i+2 );
for(j=2;j<=k;j++)
{
if((i+2)%j == 0 )
{
s=0;/*i+2不是素数*/
break;
}
}
if(s)
{
count++; /*i+2是素数*/
printf("第%d个孪生素数[%d,%d]\n",count,i,i+2);
}
}
}
}
第十三题:中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值5钱,一只母鸡值3钱,三只小鸡值1钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
#include <stdio.h>
void main()
{
int cock,hen,chicken;
for(cock=0;cock<=20;cock++)
for(hen=0;hen<=33;hen++)
{
chicken=100-cock-hen;
if(5*cock+3*hen+chicken/3.0==100)
printf("cock=%2d,hen=%2d,chicken=%2d\n",cock,hen,chicken);
}
}
第十四题: 求正整数N以内的所有勾股数。
所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。
#include"stdio.h"
void main()
{
int n;
int i,j,k;
int count=0;
while(scanf("%d",&n))
{
for(i=1;i<=n;++i)
for(j=i+1;j<=n;++j)
for(k=j+1;k<=n;++k)
if(i*i+j*j==k*k)
{
printf("[%d,%d,%d], ",i,j,k);
count++;
}
printf("total number: %d\n",count);
}
}
第十五题:两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
#include"stdio.h"
void main()
{
int a,i,b,n;
printf("There are following friendly-numbers pair smaller than 3000:\n");
for(a=1;a<=3000;a++)
{
for(b=0,i=1;i<=a/2;i++) //a的各因子和放在b中;
if(!(a%i))
b+=i;
for(n=0,i=1;i<=b/2;i++) //b的各因子和放在n中;
if(!(b%i))
n+=i;
if(n==a&&a<b) //根据条件,如果n=a, a<b(去掉重复的和自己与自己的)
printf("[%4d,%4d] ",a,b);
}
}
第十六题:选出三个数中最小数的算法流程图如下图所示:
#include"stdio.h"
void main()
{
int a,b,c,min;
printf("please input the a,b and c:\n");
scanf("%d%d%d",&a,&b,&c);
if(a<b)
{
if(a<c)
min=a;
else
min=c;
}
else
{
if(b<c)
min=b;
else
min=c;
}
printf("the min is %d\n",min);
}
第十七题:计算个人所得税,假设个人所得税为:税率*(工资-1600)。请编写程序计算应缴的所得税,其中税率定义为:
(1)当工资不超过1600时,税率为0;
(2)当工资在区间(1600,2500]时,税率为5%;
(3)当工资在区间(2500,3500]时,税率为10%;
(4)当工资在区间(3500,4500]时,税率为15%;
(5)当工资超过4500时,税率为20%。
#include"stdio.h"
void main()
{
float tax,salary;
printf("please input the salary:\n");
scanf("%f",&salary);
if(salary>=4500)
tax=0.2*(salary-1600);
else if(salary>3500)
tax=0.15*(salary-1600);
else if(salary>2500)
tax=0.10*(salary-1600);
else if(salary>1600)
tax=0.05*(salary-1600);
else
tax=0;
printf("the tax is :%.2f\n",tax);
}
第十八题:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可以提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?
#include<stdio.h>
int main()
{
float I=0,money01, money02, money03, money04, money05;
float bonus=0;
money01 = 100000 * 0.1;
money02 = money01 + 100000 * 0.075;
money03 = money02 + 200000 * 0.05;
money04 = money03 + 200000 * 0.03;
money05 = money04 + 400000 * 0.01;
printf("请输入本月利润I:");
scanf("%f", &I);
if (I<=100000)
bonus = I*0.1;
else if (I <= 200000)
bonus = money01 + (I - 100000)*0.075;
else if (I <= 400000)
bonus = money02 + (I - 200000)*0.05;
else if (I <= 600000)
bonus = money03 + (I - 400000)*0.03;
else if (I <= 1000000)
bonus = money04 + (I - 600000)*0.015;
else
bonus = money05+(I-1000000)*0.01;
printf("本月的奖金为%.2f",bonus);
}
第十九题:输入三角形的3条边a,b,c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。在一个三角形中,任意两边之和大于第三边。(其中,P =(a+b+c)/2)
#include"stdio.h"
#include"math.h"
void main()
{
int a,b,c;
float p,s,l;
printf("please input a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
l=a+b+c;
p=l/2.0;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("l=%.2f\ns=%.2f\n",l,s);
}
else
printf("These sides do not correspond to a valid triangle!!\n");
}
第二十题:输出如下杨辉三角形的前七行。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include "stdio.h"
void main()
{
int arr[7][7];
int i,j;
//初始化
for(i=0;i<7;i++)
arr[i][0]=1;
for(i=0;i<7;i++)
arr[i][i]=1;
for(i=2;i<7;i++)
for(j=1;j<=i;j++)
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
//输出:
printf("the result is :\n");
for(i=0;i<7;i++)
{
for(j=0;j<=i;j++)
printf("%5d",arr[i][j]);
printf("\n");
}