主题:请大家帮我看段程序,谢谢!
qingxiaomeng505
[专家分:0] 发布于 2010-05-13 19:19:00
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
程序源代码:
main()
{int i,m,j,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else
break;
}
i=m;
if(count==4)
{printf("%d\n",count);
break;}
}
不知道程序中各个变量代表的意义,以及该程序的算法思想,请大家帮我看看,谢谢!
回复列表 (共6个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-05-13 19:27:00
我感觉这段代码写的很乱,应该也是个初学者的代码吧,呵呵
变量用的有点不合普遍习惯,代码缺了个右大括号,而且结果也是错的……
板凳
wangbingzi1990 [专家分:0] 发布于 2010-05-13 23:05:00
这是一个穷举法 在10000以内找到满足题目所给的条件 你那个结果不是输出count而是i
3 楼
andamajing [专家分:10] 发布于 2010-05-14 23:55:00
我写了个小程序,
#include "stdio.h"
#define N 5
void main()
{
int count,x;
count=N-1;
x=1;
while((x%5==1)&&(count!=0))
{
x=x*5+1;
count--;
}
printf("there are %ld \n",x);
}
你看看行不行,N是猴子的个数
输出的桃子总数,假设最后还剩一个桃子
4 楼
sxm227 [专家分:10] 发布于 2010-05-17 10:38:00
深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询
5 楼
k1458 [专家分:350] 发布于 2010-05-17 23:36:00
#include <stdio.h>
unsigned int get_sum(unsigned int sum, int num);
unsigned int get_sum(unsigned int sum, int num)
{
if (num != 0)
// else
{
sum += sum << 2 + 1;
return get_sum(sum, num - 1);
}
}
int main(void)
{
unsigned int start = 1, sum = 0;
int num = 5;
sum = get_sum(start, 5);
printf("sum = %i", sum);
getch();
return 1;
}
6 楼
caomang [专家分:150] 发布于 2010-05-18 11:39:00
看到这个问题的时候就有了兴趣,呵呵。然后自己写了下,写错了N次……忽然发现自己的基础很烂啊。最终还是写出了,小程序一个,结果是3121,不知道对不对。
先说下楼主的问题:1,各个变量的问题自己看程序……
2,思想是找符合条件的数字,要是这个数字满足一只猴子,count减1,不满足就换数字,count重新成了5。直到找到count减光了的数为止再输出
下面就是我小程序了:
#include<stdio.h>
main()
{int i,n,j;
for(i=101;n<5;i=i+5)
{n=0;j=i;
while(j%5==1)
{j--;
j=j-j/5;
n++;
if(n==5) {printf("%d\n",i); break;}}
}}
真的是小程序,都没考虑出错情况的。
我来回复