2 qq 34951822 qq_34951822 于 2016.05.10 20:38 提问

C 分鱼问题 编译无错 运行无结果

#include
#include

int main()
{
int i,n,x,flag=1;
for(n=6;flag;n++)
{
for(i=0,x=n;flag&&i<5;i++)
{
if(!(x-1)%5)
x=5*x/4+1;
else flag=0;
}

    if(!flag)
    flag=1;

    else break;
    }

printf("至少捕到%d条鱼。\n",x);

system("pause");
return 0;

}

2个回答

YXTS122
YXTS122   2016.05.10 21:18

这代码我看着好像可以运行,不知道你的原题是什么,能说下吗

qq423399099
qq423399099   Ds   Rxr 2016.05.10 21:27

主要有3个问题:
1.if(!(x-1)%5)要改成if(!((x-1)%5)) 前面那种写法的话先计算x-1的值,然后直接取反,而不是取5的余数再取反
2.x=5*x/4+1;改成x=4*(x-1)/5;
3.printf输出的应该是n而不是x

#include <iostream>
using namespace std;

int main()
{
    int i,n,x,flag=1;
    for(n=6;flag;n++)
    {
        for(i=0,x=n;flag&&i<5;i++)
        {
            if(!((x-1)%5))
                x=4*(x-1)/5;
            else flag=0;
        }
        if(!flag)
            flag=1;
        else break;
    }
    printf("至少捕到%d条鱼。\n",n);
    system("pause");
    return 0;
}

下面再附上一个递归用法:

 #include <stdio.h>
#include <stdlib.h>
int fish(int n, int x);
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    int i=0, flag = 0, x;
    do{
        i=i+1;
        x=i*5+1;
        if(fish(5,x))//递归判断
        {
            flag = 1;
//flag标识
            printf("五个人合伙捕到的鱼总数是%d\n", x);
        }
    }while(!flag);
    return 0;
}

int fish(int n, int x)//x表示人数,x表示醒来后剩下的鱼
{
    if(x%5==1)
    {
        if(n==1)
            return 1;
        else
            return fish(n-1, (x-1)/5*4);
    }
    return 0;

}//这里递归的作用是作为判断条件
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
利用Python/C语言解决分鱼问题
A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5人至少合伙捕到多少条鱼?每个人醒来后所看
#递归 解决ABCDE 5人分鱼问题鱼,
有ABCDE五人夜间到河边捕鱼,捕完鱼后五人在河边睡着. 天亮后A先醒来,将所捕鱼平均分伟五份,结果余一条,将余的一条扔掉,带走自己的一堆.B醒来将余下的四堆又分为五份,也余一条,同样仍掉,也带走自己的一堆.C、D、E醒来后也如此,问他们这天晚上至少捕到多少条鱼?
C语言递归解决分鱼问题
A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5人至少合伙捕到多少条鱼?每个人醒来后所看
递推题之分鱼问题
题目描述 五个人(A,B,C,D,E)夜间在河边合伙捕鱼,由于太疲倦,大家都睡着了。第二天早上五个人依次醒来。A首先醒来,把鱼平均分成5份,还多1条,就把多余的1条扔回河里,拿着自己的1份回家去了。B醒来后,也把鱼平均分成5份,把多余的1条扔回河里,拿着自己的1份回家。C,D,E依次也都按照同样的办法分鱼。 请问:五个人至少合伙捕到多少条鱼?每个人醒来后看到的鱼的数目各是多少条
5人分鱼问题
A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。 日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来, 也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿 走鱼。问他们合伙至少捕了多少条鱼? (思路:定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除
捕鱼和分鱼
ABCDE五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三竿,A第一个醒来,将鱼分为5份,把多余的1条鱼扔掉,拿走自己的1份。B第二个本来,也将鱼分5份,把多余的1条鱼扔掉,拿走自己的1份。CDE依次醒来,也按同样的方法拿鱼。问他们合伙至少捕了多少条鱼? #include #include int main() { int n, i, x, flag = 1;
渔夫分鱼算法
 渔夫分鱼算法 A,B,C,D,E五个渔夫夜间合伙捕鱼,凌晨都疲惫不堪,各自在草丛中熟睡。第二天清晨A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?int count = 0;  int x = 0;  for (int i = 
基础算法思想_递归算法——五个人捕鱼
五个人去捕鱼 第二天早上 第一个人醒来 将鱼分成五份 把多余的一条鱼扔掉 拿走一份 第二个醒来 也将鱼分成5份 把多余的一条鱼扔掉 拿走一份 另外三个人依次醒来 也按同样的方法拿走鱼 问他们至少捕了多少鱼?#include"stdio.h"int sub(int n){//n代表人的个数 if(n==1) { static int i=0;//(全局变量)
C++ 实现捕鱼问题
/* 题目:A、B、C、D、E五人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地方睡着了,日上三竿, A第一个醒来,他将鱼平分作五份,把多余的一条扔回湖中,拿自己的一份回家去了, B第二个醒来,也将鱼平分为五份,扔掉多余的一条,只拿走自己的一份, 接着C、D、E依次醒来,也都按同样的办法分鱼。 问五人至少合伙捕到多少条鱼?每个人醒来后看到的鱼数是多少条? */ /* 解题思路: 假定A,
安卓APP闪退报错(未解决)
11-01 11:24:44.098: A/libc(9116): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x4 in tid 9147 (GLThread 31500) 字面意思是GL线程挂了? 也不知道是游戏里哪个动作引发的。