【问题标题】:Calculating min/max from the terminal in C从 C 中的终端计算最小值/最大值
【发布时间】:2019-10-30 01:12:04
【问题描述】:

我想创建一个程序,当我输入 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;
}

【问题讨论】:

  • 无穷大没有整数表示。如果您想要最负的有符号整数,请使用&lt;stdint.h&gt; 中的INT_MIN
  • 哦,谢谢,你能解释更多或为我制作一个样本吗?
  • 嗯...first = second = INT_MIN;
  • 问题的标题与内容无关...我更新了标题。
  • 是的,它有额外的功能,我要试试

标签: c assign infinity


【解决方案1】:

有两个问题:

  • first0 开头。如果number 为负,则if (number &gt; first) 为假。
  • 如果number &lt;= first,则使用未初始化的second

使用INT_MIN 作为您的初始值,这是您可以拥有的最大负整数。使用此声明

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

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

也去掉线

    first = number;

【讨论】:

    猜你喜欢
    • 2015-12-03
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2016-11-04
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多