趣味计算

实例:加油站加油

某加油站有a、b、c三种汽油,售价分别为3.25、3.00、2.75(元/千克),也提供了“自己加(n)”或“协助加(m)”两个服务等级,这样用户可以得到5%或10%的优惠。编程实现针对用户输入加油量x,汽油的品种y和服务的类型z,输出用户应付的金额。

代码:

#include<stdio.h>
int main()
{
float x,price,server,charge;
char y,z;
scanf("%f %c %c",&x,&y,&z);
switch(y)
{
case 'a':price=3.25;break;
case 'b':price=3.00;break;
case 'c':price=2.75;break;
}
switch(z)
{
case 'n':server=0.05;break;
case 'm':server=0.1;break;
}
charge=x*price-x*price*server;
printf("%.3f",charge);
return 0;
}


实例:灯塔数量 

有一八层灯塔,每层的灯数都是上一层的一倍,共有765盏灯,编程求最上层与最下层的灯数。

代码:

#include<stdio.h>
int main()
{
int n=1;
for(n=1;n<765;n++)
if(n+n*2+n*4+n*8+n*16+n*32+n*64+n*128==765)
break;
printf("%d %d",n,n*128);
return 0;
}


实例:买苹果问题

每个苹果0.8元,第一天买2个苹果,第二天开始每天买前一天的一倍,直到当天购买的苹果个数达到不超过100的最大值,编程求每天平均花多少钱?

代码:

#include<stdio.h>
int main()
{
int n=2,sum=2,day=1;
while(1)
{
n*=2;
if(n>=100)
break;
else
sum+=n;
day++;
}
float avg=0.8*sum/day;
printf("%f",avg);
return 0;
}


实例:猴子吃桃

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只见剩下一个桃子了。编程求第一天共摘了多少。

代码:

#include<stdio.h>
int main()
{
int n=1,i,sum=0;
for(i=0;i<9;i++)
{
n=(n+1)*2;
}
printf("%d",n);
return 0;
}


实例:百钱百鸡问题

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡”问题,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买鸡,问翁、母、雏各几?

(分析:鸡的总数为100,花的钱为100,鸡雏数量是3的倍数)

代码:

#include<stdio.h>
int main()
{
int cock,hen,chick;
for(cock=0;cock<21;cock++)
for(hen=0;hen<34;hen++)
for(chick=0;chick<100;chick++)
if(5*cock+3*hen+chick/3==100)
if(cock+hen+chick==100) 
if(chick%3==0)
printf("%d %d %d\n",cock,hen,chick);
return 0;


实例:彩球问题

在一个袋子里装有三色彩球,其中红色球有3个,白色求也有3个,黑色求有6个,问当从袋子中取出8个球时总共有多少种可能的方案。编程实现将所有可能的方案编号输出在屏幕上。

(分析:三种求一共有8个)

代码:

#include<stdio.h>
int main()
{
int red,white,black;
for(red=0;red<4;red++)
for(white=0;white<4;white++)
for(black=0;black<7;black++)
if(red+white+black==8)
printf("%d %d %d\n",red,white,black);
return 0;
}


实例:求总数问题

集邮爱好者把所有的邮票存放在3个集邮册中,在A册内存放全部的十分之二,在B册内存放全部的七分之几,在C册内存放303张邮票,问这位集邮爱好者集邮总数是多少,以及每册中各有多少邮票。

代码:

#include<stdio.h>
int main()
{
int a,b,c,x,sum;
for(x=1;x<6;x++)
{
if(10605%(28-5*x)==0)
{
sum=10605/(28-5*x);
a=a*sum/10;
b=x*sum/7;
c=303;
printf("%d\n%d %d %d",sum,a,b,c);
}


}
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值