【问题标题】:Minimum Maximum Mark最小 最大 标记
【发布时间】:2019-03-19 01:17:04
【问题描述】:

我需要从用户输入的 5 个整数中找到最大和最小标记。正在打印最大值,但没有打印最小值。有什么想法吗?

#include<stdio.h>
int main()
{
    int marks = 0, avg = 0, min = 0, max = 0;

    for (int i = 0; i < 5; i++)
    {
        printf("Enter a mark: ");
        scanf_s("%d", &marks);

        if (marks > max)
        {
            max = marks;
        }
        if (marks < min)
        {
            min = marks;
        }       
    }

    printf("The maximum mark is: %d\n", max);
    printf("The minimum mark is: %d\n", min);
    //printf("The minimum mark is: %d\n", avg);

    getch();
    getch();
}

【问题讨论】:

标签: c max min


【解决方案1】:

将 min 的初始值设置为更高的值,例如 10000。因为您的输入值可能都不小于 0。
或者更好的是,为您的数据类型使用最大可用值

#include <stdio.h>
#include <limits.h>
int main()
{
    int marks = 0, avg = 0, min = INT_MAX, max = 0;

    for (int i = 0; i < 5; i++)
    {
        printf("Enter a mark: ");
        scanf_s("%d", &marks);

        if (marks > max)
        {
            max = marks;
        }
        if (marks < min)
        {
            min = marks;
        }       
    }

    printf("The maximum mark is: %d\n", max);
    printf("The minimum mark is: %d\n", min);
    //printf("The minimum mark is: %d\n", avg);

    getch();
    getch();
}

【讨论】:

  • 设置为10000比0好。但是如果有人输入10001呢?
  • 您应该将最小值和最大值设置为输入的第一个值。这样,您可以避免奇怪的初始化值,同时保留程序的真实意图
  • @EmanueleGiona 我同意一组值,但在读取输入值时,我认为它会让你的代码看起来很糟糕。
  • @unlut 您只需将marks &gt; max 替换为i == 0 || marks &gt; maxmin 也是如此。还不错。
  • @Bleach101:“有效”并不意味着它是正确的。考虑一下如果用户输入了一个太大的数字,或者什么都没有,或者他们的名字,或者“五”这个词,或者......
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
相关资源
最近更新 更多