我正在使用这个小程序来避免在纸上迭代所有可能的三个骰子组合。它接受使用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的文档中找不到任何可能表明我做错了什么的东西。我之前遇到过这个问题,并且能够绕过它,但我想知道发生这种情况的真正原因。我不关心检查有效的整数输入,因为我自己只使用它,我知道我将输入一个整数。
答案 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);
}
}
}
}
}