趣味计算

实例:加油站加油编程

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

代码:server

#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盏灯,编程求最上层与最下层的灯数。it

代码:io

#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;
}
float


实例:买苹果问题di

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

代码:

#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; }