Расчет мин / макс с терминала в C - PullRequest
0 голосов
/ 30 октября 2019

Я хочу создать программу, которая печатает наибольшее первое число и наибольшее второе число, когда я ввожу число 5 (1. значение числа = 0). Нет проблем, когда я ввожу 5 чисел больше 0, нокогда я ввожу 5 цифр меньше 0, программа печатает первое наибольшее число 0, а второе наибольшее число 1.

#include <stdio.h>

int main() {
    int number = 0, first, second, numbercounter = 0;
    first = number;

    while (numbercounter < 5) {
        printf("5 tamsayi girin:", ++numbercounter);
        scanf("%d", &number);

        if (number > first) {
            second = first;
            first = number;
        } else if (number > second)
            second=number;
    }

    printf("En buyuk sayi: %d \n", first);
    printf("En buyuk ikinci sayi:%d \n", second);

    if (first % second == 0) {
        printf("%d, %d'nin tam katidir.\n", first, second);
    } else {
        printf("%d, %d'nin tam kati degildir.\n", first, second);
    }

    if (first == second) {
        printf("%d ve % esittir.\n", first, second);
    } else {
        printf("%d ve %d esit degildir.\n", first, second);
    }
    if (first % 2 != 0) {
        printf("%d tektir.\n", first);
    } else {
        printf("%d cifttir.\n", first);
    }

    return 0;
}

1 Ответ

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

Есть две проблемы:

  • first начинается как 0. Если number отрицательно, if (number > first) ложно.
  • second используется неинициализированным, если number <= first.

Используйте INT_MIN для ваших начальных значений, это самое отрицательное целое число, которое вы можете иметь. Используйте это объявление

#include <stdio.h>
#include <limits.h>

int main()
{
    int number = 0, first = INT_MIN, second = INT_MIN, numbercounter = 0;

Также избавьтесь от строки

    first = number;
...