使用scanf()获取单个整数

时间:2015-01-26 18:15:19

标签: c integer scanf

我正在使用这个小程序来避免在纸上迭代所有可能的三个骰子组合。它接受使用scanf()的输入,然后检查每个组合以查看骰子的总和是否是提供的数字。

#include <stdlib.h>
#include <stdio.h>

void main() {
    int a,b,c,s,num=0;
    printf("Enter the desired sum:");
    scanf("%d",&s);
    printf("Seeking for sums of %d",s);
    for(a=1; a++; a<=6) {
        for(b=1; b++; b<=6) {
            for(c=1; c++; c<=6) {
                if(a+b+c==s) {
                    num++;
                    printf("Die 1: %d, Die 2: %d, Die 3: %d",a,b,c);
                }
            }
        }
    }
}

问题是,程序没有继续扫描scanf语句。我在scanf的文档中找不到任何可能表明我做错了什么的东西。我之前遇到过这个问题,并且能够绕过它,但我想知道发生这种情况的真正原因。我不关心检查有效的整数输入,因为我自己只使用它,我知道我将输入一个整数。

1 个答案:

答案 0 :(得分:-1)

the following code fixes each of the problems
and not to insult georgia, but the 'georgian' method of braces is 
IMO: a clutter of the code that makes it difficult to read

#include <stdlib.h>
#include <stdio.h>

void main() 
{
    int a,b,c,s,num=0;
    printf("Enter the desired sum:");
    scanf(" %d",&s);    // note leading space in format string
    printf("Seeking for sums of %d",s);
    fflush(stdout);

    for(a=1; a++; a<6)         // note range 0...5 not 0...6
    {
        for(b=1; b++; b<6)     // note range 0...5 not 0...6
        {
            for(c=1; c++; c<6) // note range 0...5 not 0...6 
            {
                if(a+b+c==s) 
                {
                    num++;
                    printf("Die 1: %d, Die 2: %d, Die 3: %d\n",a,b,c);
                }
            }
        }
    }
}