1.企业发放的奖金根据利润提成。利润(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>
void main()
{
int i,k;
float j;
printf("please input the lirun 万:\n");
scanf("%d",&k);
i=k/5;
if(i>=0 && i<=2)
{
j=0.1*i;
}
else if(i>2 && i<=4)
{
j=1+(i-10)*0.075;
}
else if(i>4 && i<=8)
{
j=1+0.75+(i-20)*0.05;
}
else if(i>8 && i<=12)
{
j=1+0.75+1+(i-40)*0.03;
}
else if(i>12 && i<=20)
{
j=1+0.75+1+0.6+(i-60)*0.015;
}
else
{
j=1+0.75+1+0.6+0.6+(i-100)*0.01;
}
printf("the jiangjin is %f万",j);
}
2.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include<stdio.h>
#include<math.h>
void main()
{
int i;
int k,j;
for(i=0;i<1000;i++)
{
k=sqrt(i+100);
j=sqrt(i+268);
if(k*k==(i+100) && j*j==(i+268))
{
printf("%d\n",i);
}
}
}
3.输入年月日,输出这是本年的第几天
#include<stdio.h>
#include<math.h>
void main()
{
int time;
int y,m,d;
printf("input the year month day:\n");
scanf("%d%d%d",&y,&m,&d);
if(y%400==0 || y%4==0)
{
switch(m)
{
case'1':
{
time=d;
printf("the day is the number:%d\n",time);
break;
}
case'2':
{
time=31+d;
printf("the day is the number:%d\n",time);
break;
}
case'3':
{
time=31+29+d;
printf("the day is the number:%d\n",time);
break;
}
case'4':
{
time=31+29+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'5':
{
time=31+29+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'6':
{
time=31+29+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'7':
{
time=31+29+31+30+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'8':
{
time=31+29+30+31+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'9':
{
time=31+29+30+31+31+30+31+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'10':
{
time=31+29+30+31+31+30+31+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'11':
{
time=31+29+30+31+31+30+31+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'12':
{
time=31+29+30+31+31+30+31+31+30+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
}
}
else
{
switch(m)
{
case'1':
{
time=d;
printf("the day is the number:%d\n",time);
break;
}
case'2':
{
time=31+d;
printf("the day is the number:%d\n",time);
break;
}
case'3':
{
time=31+28+d;
printf("the day is the number:%d\n",time);
break;
}
case'4':
{
time=31+28+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'5':
{
time=31+28+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'6':
{
time=31+28+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'7':
{
time=31+28+31+30+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'8':
{
time=31+28+30+31+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'9':
{
time=31+28+30+31+31+30+31+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'10':
{
time=31+28+30+31+31+30+31+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
case'11':
{
time=31+28+30+31+31+30+31+31+30+31+d;
printf("the day is the number:%d\n",time);
break;
}
case'12':
{
time=31+28+30+31+31+30+31+31+30+31+30+d;
printf("the day is the number:%d\n",time);
break;
}
}
}
}
4.打印9*9乘法表
#include<stdio.h>
void main()
{
int a[9][9];
int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
a[i][j]=(i+1)*(j+1);
printf("%-3d ",a[i][j]);
}
printf("\n");
}
}
5.古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#include<stdio.h>
void main()
{
int i,a,b,c,d;
a=1;
b=1;
printf("the month is\n");
scanf("%d",&c);
for(i=1;i<c-1;i++)
{
d=a;
a=a+b;
b=d;
}
printf("%d\n",a);
}
6.判断 101-200 之间有多少个素数,并输出所有素数。
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,b,c,u;
for(j=101;j<=200;j++)
{
b=sqrt(j);
for(i=2;i<b;i++)
{
c=j%i;
if(c==0)
{
u=0;
break;
}
u=1;
}
if(u==1)
{
printf("%d\n",j);
}
}
}
7.打印出所有的 “ 水仙花数 ” ,所谓 “ 水仙花数 ” 是指一个三位数,其各位数字立方和等于该数。
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,b,s,g,sum;
for(j=100;j<1000;j++)
{
b=j/100;
s=(j-b*100)/10;
g=(j-100*b-10*s)/1;
sum=b*b*b+s*s*s+g*g*g;
if(sum==j)
{
printf("%d\n",j);
}
}
}
8.将一个正整数分解质因数。例如:输入 90, 打印出 90=2*3*3*5 。
思路:先用2去除,然后逐渐增加。
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,b,a;
printf("please input a number:\n");
scanf("%d",&a);
for(i=2;i<=a;i++)
{
while(i!=a)
{
b=a%i;
if(b==0)
{
printf("%d *",i);
a=a/i;
}
else
{
break;
}
}
}
printf("%d\n",a);
}
9.利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 a 表示, 60-89 分之间的用 b 表示,60 分以下的用 c 表示。
#include<stdio.h>
#include<math.h>
void main()
{
int a;
char b;
printf("please input the grade:\n");
scanf("%d",&a);
b=(a>=90)?'a':((a>=60)?'b':'c');
printf("the grade is %c\n",b);
}
10.输入两个正整数 m 和 n ,求其最大公约数和最小公倍数。
思路:用辗除法求最大公约数。由数学可知,两个数的乘积=两数最小公倍数*最大公约数。
辗除法:输入两个数m,n;另m>n;temp=m%n;如果temp=0,那么n就是m,n的最大公约数,否则将temp的值赋给n,将n的值赋给m,重复以上步骤。
#include<stdio.h>
void main()
{
int gcd(int x,int y); //求最大公约数
int gjd(int w,int u); //求最小公倍数
int m,n,g,t,i;
printf(" please input two numbers:\n");
scanf("%d%d",&m,&n);
if(m<n)
{
i=m;
m=n;
n=i;
}
g=gcd(m,n);
t=gjd(m,n);
printf("%d和%d的最小公倍数为:%d,最大公约数为%d:",m,n,t,g);
}
int gjd(int w,int u)
{
int s,f;
s=gcd(w,u);
f=(w*u)/s;
return(f);
}
int gcd(int x,int y)
{
int r,h,temp;
r=x;
h=y;
while(h!=0)
{
temp=r%h;
r=h;
h=temp;
}
return(r);
}
11.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include<stdio.h>
void main()
{
char c;
int zimu=0,blank=0,number=0,others=0;
while((c=getchar())!='\n')
{
if(c>='A' && c<='z')
{
zimu++;
}
else if(c==' ')
{
blank++;
}
else if(c>='0' && c<='9')
{
number++;
}
else
{
others++;
}
}
printf(" the zimu has %d,the blank has %d,the number has %d,the others has %d\n",zimu,blank,number,others);
}
12.求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222( 此时
共有 5 个数相加 ) ,几个数相加有键盘控制。
#include<stdio.h>
#include<math.h>
void main()
{
int m,n;
long s=0;
int i,j;
printf("please input the number:,times:\n");
scanf("%d,%d",&m,&n);
for(i=1;i<=n;i++)
{
s=m+s;
m=m+m*(pow(10,i)); //pow(x,y),求x的y次幂
}
printf("the anser is %ld\n",s);
}
13.一个数如果恰好等于它的因子之和,这个数就称为 “ 完数 ” 。例如 6=1 + 2 + 3. 编程zhao 出 1000 以内的所有完数
#include<stdio.h>
void main()
{
int i,a,j,k,u,b;
int w=0;
int p[10];
for(i=1;i<=10;i++)
{
for(j=1;j<i;j++)
{
while(j!=i)
{
b=i%j;
k=0;
if(b==0)
{
p[k]=j;
i=i/j;
k++;
}
else
{
break;
}
}
}
for(u=0;u<=k;u++)
{
w=p[u]+w;
}
if(w==i)
{
printf("the number %d is wanshu\n",i);
}
}
}
14.一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
#include<stdio.h>
void main()
{
void h(float x,int y); //算第u次的高度和总路程
void g(float z,float s); //输出
float i,n;
int u;
printf("please input the times:\n");
scanf("%d",&u);
n=100.0;
h(n,u);
}
void h(float x,int y)
{
int a=1;
float s=100;
while(a<=y)
{
x=x/2.0;
a++;
s=s+x*2;
}
g(x,s);
}
void g(float z,float s)
{
printf("the 10th is %f\nthe total road is %f\n ",z,s);
}
15.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?
#include<stdio.h>
void main()
{
int total=1;
int j,n;
printf("please input the time:\n"); //输入想计算的天数
scanf("%d",&n);
for(j=1;j<=n;j++)
{
total=(total+1)*2;
}
printf("the total is %d\n",total);
}
16.有一分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13... 求出这个数列的前 20 项之和。
#include<stdio.h>
void main()
{
int i,j;
float k,s=0.0;
int a[20]={1,2};
int b[20]={2,3};
for(i=2;i<20;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(j=2;i<20;i++)
{
a[j]=a[j-1]+a[j-2];
}
for(i=0,j=0;i<20,j<20;i++,j++)
{
k=b[j]/a[i];
s=s+k;
}
printf("the result is %f",s);
}
17.投票系统
#include<stdio.h> //简易的投票系统,人数固定
#include<string.h>
void main()
{
struct
{
char name[20];
int sum;
}num[4]={{"linda",0},{"lisa",0},{"kate",0},{"sasha",0}};
char a[4];
int k,j,i;
for(i=0;i<4;i++)
{
printf("第%d位投:",i);
gets(a);
printf("\n");
for(j=0;j<4;j++)
{
if(strcmp(a,num[j].name)==0)
{
num[j].sum=num[j].sum+1;
}
continue;
}
}
printf("the linda's is %d\n",num[0].sum);
printf("the lisa's is %d\n",num[1].sum);
printf("the kate's is %d\n",num[2].sum);
printf("the sasha's is %d\n",num[3].sum);
}
#include<stdio.h>
#include<string.h>
void main()
{
int o,l,i,u,t;
printf("请输入参加评选的人数:\n");
scanf("%d",&o);
struct stu
{
char name[20];
int sum;
};
struct stu num;
printf("请输入参加评选的选手名字:\n");
for(l=0;l<o;l++)
{
scanf("%s",&num[l].name);
printf("\n");
num[l].sum=0;
}
printf("请输入本次选民的总人数:\n");
scanf("%d",&u);
printf("下面请选民开始投票:\n");
for(i=0;i<u;i++)
{
printf("第%d位投:",i);
gets(a);
printf("\n");
for(j=0;j<o;j++)
{
if(strcmp(a,num[j].name)==0)
{
num[j].sum=num[j].sum+1;
}
continue;
}
}
for(t=0;t<o;t++)
{
printf("the %s's poll is %d\n",num[t].name,num[t].sum);
}
}
#include<stdio.h>
#include<string.h>
void main()
{
void name(int n);
int o,i,u;
char a[20];
printf("请输入参加评选的人数和本次选民的总人数:\n");
scanf("%d%d",&o,&u);
printf("请输入参加评选的选手名字:\n");
for(i=0;i<o;i++)
{
gets(a);
}
}
/*void name(int n)
{
int l;
struct
{
char name[20];
int sum;
}num[n];
for(l=0;l<n;l++)
{
gets(num[l].name);
printf("\n");
num[l].sum=0;
}
}
printf("下面请选民开始投票:\n");
for(i=0;i<u;i++)
{
printf("第%d位投:",i);
gets(a);
printf("\n");
for(j=0;j<o;j++)
{
if(strcmp(a,num[j].name)==0)
{
num[j].sum=num[j].sum+1;
}
continue;
}
}
for(t=0;t<o;t++)
{
printf("the %s's poll is %d\n",num[t].name,num[t].sum);
}
}*/
#include<stdio.h>
#include<string.h>
void main()
{
void name(char n[20],int x,int y);
void shuchu(char b[20],int w,int q[20]);
int o,i,u;
char a[20];
printf("请输入参加评选的人数和本次选民的总人数:\n");
scanf("%d%d",&o,&u);
printf("请输入参加评选的选手名字:\n");
for(i=0;i<o;i++)
{
scanf("%s",&a[i]);
}
name(a,u,o);
}
void name(char n[20],int x,int y)
{
int i,j,k;
int sum[20];
char a[20];
for(k=0;k<x;k++)
{
sum[k]=0;
}
printf("下面请选民开始投票:\n");
for(i=0;i<x;i++)
{
printf("第%d位投:",i);
gets(a);
printf("\n");
for(j=0;j<y;j++)
{
if(strcmp(a,n)==0)
{
sum[j]=sum[j]+1;
}
continue;
}
}
shuchu(a,y,sum);
}
void shuchu(char b[20],int w,int q[20])
{
int t;
for(t=0;t<w;t++)
{
printf("the %s's poll is %d\n",b[t],q[t]);
}
}
18.求 1+2!+3!+...+20! 的和
#include<stdio.h>
void main()
{
int i,j,s=0,k;
for(i=1;i<21;i++)
{
k=1;
for(j=1;j<=i;j++)
{
k=j*k;
}
s=s+k;
}
printf("the answer is %d\n",s);
}
19.利用递归方法求 5!
#include<stdio.h>
void main()
{
int i;
int jiecheng(int x); //递归函数
for(i=0;i<6;i++)
{
printf("the %d de jiecheng is %d\n",i,jiecheng(i));
}
}
int jiecheng(int x)
{
int y,sum;
if(x==0)
{
sum=1;
}
else
{
sum=jiecheng(x-1)*x;
}
return(sum);
}
20.有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?
#include<stdio.h>
void main()
{
int i;
int year(int x);
for(i=1;i<6;i++)
{
printf("the %d is %d\n",i,year(i));
}
}
int year(int x)
{
int sum;
if(x==1)
{
sum=10;
}
else
{
sum=year(x-1)+2;
}
return(sum);
}
21.给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#include<stdio.h>
void main()
{
int n,k,s,j,i=0;
int a[5];
printf("please input the number:\n");
scanf("%d",&n);
for(j=10000;j>=1;j=j/10)
{
k=n/j;
if(k!=0)
{
a[i]=k;
i=i+1;
n=n-k*j;
}
}
printf("the number is %d wei\n",i);
for(s=i-1;s>=0;s--)
{
printf("%d",a[s]);
}
}
22.一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。
#include<stdio.h>
void main()
{
int n,i,j,k,b;
int a[5];
printf("please input the number:\n");
scanf("%d",&n);
b=n;
for(i=10000,j=0;i>=1;i=i/10,j++)
{
k=n/i;
a[j]=k;
n=n-k*i;
}
if(a[0]==a[4] && a[1]==a[3])
{
printf("the number %d is 回数\n",b);
}
else
{
printf("the number %d is not 回数\n",b);
}
}
23.x星球的钞票的面额只有:100元,5元,2元,1元,共4种。小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,剩下的当然都是5元面额的。银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗?(5元,2元,1元面额的必须都有,不能是0)
#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<40;i++)
{
for(j=1;j<10;j++)
{
k=j+5*i+10*j*2;
if(k==200)
{
printf("the 5 is %d,the 2 is %d ,the 1 is %d\n",i,10*j,j);
}
}
}
}
24.