C语言课程设计报告doc.doc第1章循环
马克思手稿中有一道数学题,有30人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令;问男人、女人和小孩各有几人?
A、B、C、D、E五人在某天夜里合伙捕鱼,到第二天凌晨都疲惫不堪,于是各自睡觉。日上三竿,A第一个醒来,他将鱼分成了5份,把多余的1条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成了5份,把把多余的1条鱼扔掉,拿走自己的一份。C、D、E依次醒来按同样的方法拿鱼。问他们合伙至少补了多少条鱼?
减式还原:编写程序求解下式中各字母所代表的数字,不同的字母代表不同的数字(算法提示:采用测试法)。
P E A R
- A R A
P E A
1. 设男人、女人、小孩分别为a、b、c人,由题意可知:
a+b+c=30
3a+2b+c=50
三个未知数,只有两个方程,故是多解问题。可采用多重循环组合出各种可能的a、b、c的值。通过循环列出男人、女人、小孩可能的人数,在对可能的人数进行条件测试。
因为在场的人中男人、女人、小孩至少有一个,根据方程可知:
a的范围是:1-15;b的范围是:1-23;c的范围是:1-45。
2. 要知道他们合伙补了多少鱼,只需知道A醒来时看到多少条鱼,所以要知道B醒来时看到多少条鱼。。。。。。所以需知道E醒来时看到多少条鱼,而题意是他们至少捕获多少条鱼,所以E醒来时一定是6条鱼,而前一个醒来时的鱼是后一个人醒来时的5倍还多一条。
3. 设PEAR、ARA、PEA分别代表x、y、z三个整数,由题意可知:
x=(P*1000+E*100+A*10+R)
y=(A*100+R*10+A)
z=(P*100+E*10+A)
四个未知数,只有三个方程,故是多解问题。可采用多重循环组合出各种可能的P、E、A、R的值。通过循环列出它们可能代表的数字,再对可能的数进行条件测试。根据方程可知:
P、E、A、R的范围均为:0-9。
第一题:
#include <>
int main()
{
int x,y,z;
for(x=1;x<17;x++)
for(y=1;y<25;y++)
for(z=1;z<30;z++)
if((x+y+z==30)&&(3*x+2*y+z==50))
printf("男人=%d,女人=%d,小孩=%d\n",x,y,z);
}
第二题:
#include <>
int main()
{
int n,i,x,flag=1;
for(n=6;flag;n++)
{for(x=n,i=1&&flag;i<=5;i++)
if((x-1)%5==0) x=4*(x-1)/5;else flag=0;
if(flag) break;
else flag=1;
}
printf("Total number of fish catched=%d\n",n);
return 0;
}
第三题:
#include<>
void main()
{
int p,e,a,r;
for(p=1;p<=9;p++)
C语言课程设计报告doc 来自淘豆网www.taodocs.com转载请标明出处.