C语言五人分鱼不出结果

#include <iostream>
int restfish(int *ptd);
int main()
{
    int sum;
    int *pt = &sum;
    for (int sum = 5;sum<100000; sum++)
    {
        for (int i = 0; i < 5; i++)
        {
            sum = restfish(pt);
            if (sum % 5 == 1)
            {
                printf("%d\n", sum);
            }
        }
    }
    return 0;
}

int restfish(int *ptd ) 
{
    *ptd = ((*ptd - 1) / 5)*4;
    return *ptd;
}

 

为什么这个运行不出结果??????VS要运行很久,而且报错,返回-1 

从5开始往后++,到3121,运行不出来。。。

一个是指针问题,另一个是检测条件,要第5个人至少份到一条鱼才算成功。

#include <stdio.h>

int restfish(int *ptd);

int main()
{
    for (int sum = 5; sum < 100000; sum++)
    {
        int rest = sum;
        int share = 0;
        for (int i = 0; i < 5; i++)
            share = restfish(&rest);
            
        if (share > 0)
        {
            printf("Minimal number of fish: %d\n", sum);
            break;
        }
    }
    return 0;
}

int restfish(int *ptd ) 
{
    *ptd = ((*ptd - 1) / 5)*4;
    return *ptd;
}


// Output
Minimal number of fish: 31

 

main函数第一行的    int sum; 没有初始化,数据是随机的。

for循环里定义了另一个同名变量sum,最好避免。

你把需求贴一下,再来看看怎么改合适

如果你满意我的回答,请点采纳。你的认可是我们互助的动力。