从 C 中的终端计算 min/max

Calculating min/max from the terminal in C

我想创建一个程序,当我输入 5 个数字时打印最大的第一个数字和最大的第二个数字。(1.value 的数字是=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;
}

有两个问题:

  • 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;