C语言 如果输入的总数不等于8,则退出1



我想让用户输入8个数字。如果输入的数字少于8个,程序将退出。

我应该使用什么if语句?
我应该把我的循环sum += I然后如果sum不是8然后退出吗?

这是我目前得到的,但它不工作:

int main() {
    int i, numb;
    int sum = 0;
    // the loop to enter 8 numb
    printf("enter 8 numbers");
    if (i=0;i<8;i++) {
        scanf("%d", &numb);
        sum =+i;
        if (sum < 8)
            exit(1);
    }
    return (0);
}

您希望用户输入8个数字,由于您没有提到总和,所以我假设它无关紧要。完全删除内部if条件,并用循环替换外部if。

代码如下:

for (i = 0; i < 8; i++) {
    scanf("%d", &numb);
    //Do whatever you want to do with the number here

由于控制台的工作方式,您无法告诉EOF在哪里。您可以通过检查数字之间的分隔符来实现您想要的结果。如果您希望同一行中的数字不小于8,您可以这样做

int main() {
    int i, numb;
    int sum = 0;
    char separator=' ';
    // the loop to enter 8 numb
    printf("enter 8 numbers");
    for (i = 0; i<8; i++)
    {
        if (separator == 'n')//enter character encountered
            break;
        scanf("%d%c", &numb,&separator);
    }
    if (i < 8)
        exit(1);
    return (0);
}

这里有一个算法,它正好是你想要的:

 1. Set a counter to 0
 2. While not end of file (EOF) do
     1. Read a number
     2. Increase counter by 1
3. If sum counter equals 8, return 1, else return 0

和你的代码修复(因为你终于发布了你试图做的):

int main()
{
    int i, numb, counter = 0;
    printf("enter 8 numbers");
    while(scanf("%d", &numb) != EOF)
    {   
        counter++;
    }
    if (counter < 8)
    {
        printf("not enough numbersn");
        exit(1);
    }
    return (0);
}

实时演示:http://ideone.com/iiOl1A

最新更新