100道练习题(持续更新)

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值