C语言换硬币问题,循环结构

#include


#include
#include
int main()
{
    int x,fen5,fen2,fen1,total,count;
    scanf("%d",&x);
    for(fen5=(x-3)/5;fen5>=1;fen5--)
    {
        for(fen2=((x-5*fen)-1)/2,count=0;fen2>=1;fen2--)
        {
            fen1=x-5*fen5-2*fen2;
            total=fen1+fen2+fen5;
            count++;
            printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",fen5,fen2,fen1,total);
        }
     }
    printf("count = %d",count);
    return 0;
}

img


为什么按照我的代码,结果部分错误啊?

你的代码逻辑本身是错误的。
这其实至少一个简单的除数计算:

#include <stdio.h>
int main()
{
    
    int fen5, fen2, fen1, num, count = 0;

    scanf("%d", &num);
    
    for (fen5 = num / 5; fen5 > 0; fen5--)
    {
        int remain = num - fen5 * 5;
        for (fen2 = remain / 2; fen2 > 0; fen2--)
        {
            fen1 = remain - 2 * fen2;
            if (fen1 > 0)
            {
                printf("fend5:%d, fen2:%d, fen1:%d,total:%d\n",
                    fen5, fen2, fen1, fen5 + fen2 + fen1);

                count++;
            }
        }
    }

    printf("count = %d\n", count);

    getchar();

    return 0;

}

如果对您有用,望采纳。