编程入门者问题求助,韩信点兵。

#include
int main()
{int i,a,b,c,kase = 0;
FILE *fin;
fin = fopen("hanxin.in","r");
while(fscanf(fin,"%d %d %d",&a,&b,&c) !=EOF);
{
for(i=10;i<101;i++)
{
if(i%3 == a && i%5 == b && i%7 == c)
printf("Case %d: %d\n",++kase,i);
else printf("Case %d: No answer\n",++kase);
}
}
fclose(fin);
return 0;
}

3个回答

看看对吗

int main()
{
    int i,a,b,c,kase = 0;
    FILE *fin;
    fin = fopen("hanxin.in","r");
    while(fscanf(fin,"%d %d %d",&a,&b,&c) !=EOF);
    {
        bool bRet = false;
        for(i=10;i<101;i++)
        {
            if(i%3 == a && i%5 == b && i%7 == c)
            {
                bRet = true;
                break;
            }
        }

        if(bRet)
            printf("Case %d: %d\n",++kase,i);
        else 
            printf("Case %d: No answer\n",++kase);
    }
    fclose(fin);
    return 0;
} 
shihengzhen101
AlbertS 调试的时候总得有个报错的地方啊
接近 4 年之前 回复
gzzaigcn
天才2012 回复Choco_nut: 是不是open失败了,代码写的不够健壮啊
接近 4 年之前 回复
Choco_nut
Choco_nut 语法没错误,但运行不起来。
接近 4 年之前 回复
shihengzhen101
AlbertS 回复Choco_nut: 错误出现在哪一行代码?
接近 4 年之前 回复
Choco_nut
Choco_nut 编译没问题,运行之后 “0x7c92100b”指令引用的“0x00000034”内存。该内存不能为“read".
接近 4 年之前 回复

请说明你的问题,和原来的题目

Choco_nut
Choco_nut 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入三个非负整数a,b,c,表示每种队形的队尾人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件结束为止 样例输入:2 1 6 2 1 3 样例输出:Case 1 : 41 Case 2 : No answer 我的问题 就是 我的代码是错的 希望帮我修改一下,不胜感激。
接近 4 年之前 回复

不看题目,只看程序,出现问题的地方一个是文件是否存在,判断一下file指针是否为空,二是fscanf貌似是遇到空格和换行结束的。也就是fscanf用的不对。

立即提问