用户输入特定数量的整数后,如何停止scanf循环?

时间:2016-06-19 11:33:37

标签: c loops scanf

#include <stdio.h>

int main(void) {
double numbersEntered, sum = 0;

do
{
    printf("Enter a number: ");
    scanf("%lf", &numbersEntered);
    sum += numbersEntered;
}

while (/* ??? */);

printf("Sum = %.2lf", sum);

return 0;
}

我应该在while语句中做什么来在用户输入4整数后停止循环?

4 个答案:

答案 0 :(得分:2)

你需要介绍一个柜台:

double numbersEntered, sum = 0;
int count = 0;

do
{
    printf("Enter a number: ");
    scanf("%lf", &numbersEntered);
    sum += numbersEntered;
    count++;
} while (count < 4);

确保你增加它,否则你的循环永远不会结束。

将4更改为常量(甚至可配置)变量将使程序更加灵活,但实际上是否需要执行此操作取决于应用程序需要执行的操作。

答案 1 :(得分:2)

我可以建议以下解决方案

#include <stdio.h>

int main( void ) 
{
    const int N = 4;

    double sum = 0.0;

    for ( int i = 0, success = 1; success && i < N; i++ )
    {
        double numberEntered;

        printf( "Enter a number: " );


        if ( success = ( scanf( "%lf", &numberEntered ) == 1 ) ) sum += numberEntered;
    }

    printf( "\nSum = %.2lf", sum );


    return 0;
}

程序输出看起来像

Enter a number: 1.1
Enter a number: 2.2
Enter a number: 3.3
Enter a number: 4.4

Sum = 11.00

或者程序看起来像

#include <stdio.h>

int main( void ) 
{
    const int N = 4;

    double sum = 0.0;

    printf( "Enter %d numbers\n\n", N );

    for ( int i = 0, success = 1; success && i < N; i++ )
    {
        double numberEntered;

        printf( "Enter number %d: ", i + 1 );


        if ( success = ( scanf( "%lf", &numberEntered ) == 1 ) ) sum += numberEntered;
    }

    printf( "\nSum = %.2lf", sum );


    return 0;
}

在这种情况下,其输出可能看起来像

Enter 4 numbers

Enter number 1: 1.1
Enter number 2: 2.2
Enter number 3: 3.3
Enter number 4: 4.4

Sum = 11.00

您可以要求用户输入输入值的数量,而不是使用等于4的常数N.

答案 2 :(得分:0)

嘿,您需要将要扫描的整数数作为输入。 然后不断穿越。     #include

int main() {
double numbersEntered, sum = 0;
int numbersToBeEntered = 0;
scanf("%d",&numbersToBeEntered);    
do
{
printf("Enter a number: ");
scanf("%lf", &numbersEntered);
sum += numbersEntered;
}while (--numbersToBeEntered);

printf("Sum = %.2lf", sum);

return 0;
}

答案 3 :(得分:0)

当您输入指定的双倍数时,使用计数器结束循环。 此外,请务必检查scanf返回值,否则,如果您输入的内容不是double,则最终会添加numbersEntered的旧值,这大部分都不是您想要的。

#include <stdio.h>

int main(void) {
    double numbersEntered, sum = 0;
    int cnt = 0;
    int ret;
    do
    {
        printf("Enter a number: ");
        ret = scanf("%lf", &numbersEntered);
        if (ret != 1) continue;
        sum += numbersEntered;
        cnt++;
    } while (cnt < 4);
    printf("Sum = %.2lf", sum);
    return 0;
}