Чего не хватает в этом коде, и правильно ли это? - PullRequest
0 голосов
/ 28 октября 2019

Я должен написать код на c, где пользователь может вводить числа выше 0. Если пользователь вводит число ниже или = 0, то следующим будет вывод: минимум чисел, максимум, среднее, сумма и количество чисел. Я должен использовать функцию scanf в цикле while. Я пытался написать код, но мне нужна помощь в какой-то момент кода.

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

int main(void) {
    int i = 1, number = 0, min = 0, max = 0, average = 0, sum = 0;

    while(i > 0) {
        printf("Enter a number: ");
        scanf("%d", &i);
    }
    if (i <= 0) {
        i++;
        sum += i;
    }
    return EXIT_SUCCESS;
}

Я застрял в той части, где начинается «если». Что я должен написать, чтобы получить минимум, максимум, сумму, среднее и количество моих набранных чисел. А также, остальная часть моего кода верна? Или я что-то упустил?

1 Ответ

0 голосов
/ 28 октября 2019

Ваша программа не имеет смысла. Например, этот цикл

while(i > 0) {
    printf("Enter a number: ");
    scanf("%d", &i);
}

ничего не вычисляет.

Программа может выглядеть следующим образом

#include <stdio.h>

int main(void) 
{
    int n = 0, min = 0, max = 0, sum = 0;

    int number;

    printf( "Enter a seria of numbers (0 or a negative number means exit)\n" );

    while ( scanf( "%d", &number ) == 1 && number > 0 )
    {
        ++n;
        sum += number;
        if ( min == 0 || number < min ) min = number;
        if ( max < number ) max = number;
    }

    printf( "The quantity of numbers: %d\n"
            "the minimum number: %d\n"
            "the maximum number: %d\n"
            "their sum : %d\n"
            "the average:  %d\n",
            n, min, max, sum, n == 0 ? 0 : sum / n );

    return 0;
}

Ее вывод может выглядеть, например,

Enter a seria of numbers (0 or a negative number means exit)
1 2 3 4 5 6 7 8 9 0
The quantity of numbers: 9
the minimum number: 1
the maximum number: 9
their sum : 45
the average:  5
...