【问题标题】:C/ min and max of a little fieldC/ 小范围的最小值和最大值
【发布时间】:2014-03-22 22:12:29
【问题描述】:

我的程序不起作用。 我想要最大值和最小值。 什么错误? 谢谢大家;)

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int wert[N],i,min,max;
    printf("Bitte geben Sie 5 Zahlen ein! \n");
    for(i=0;i<N;i++)
        scanf("%i",&wert[i]);//Eingabe der Werte
        printf("Wiederholung: \n");
    for(i=0;i<N;i++)
        printf("\n %i \n",wert[i]);//Aushabe der Werte
    for(i=0;i<N;i++)
        if (wert[i]<min)
        wert[i]=min;
        else if (wert[i]>max)
        wert[i]=max;
    printf("Maximalwert: %i",max);
    printf("Minimalwert: %i",min);
    return 0;

【问题讨论】:

  • 那为什么是c#标签呢?看起来无关紧要
  • 定义“不起作用”。它不编译?它崩溃了吗?它有效,但给您带来了与您预期不同的结果?
  • @starsplusplus 程序编译并运行。但最小值和最大值是错误的。那是唯一的问题。我已经用 Sakthi Kumar 的解决方案解决了这个问题。

标签: c int max min


【解决方案1】:

你没有初始化minmax

#include <limits.h>

int min = INT_MAX;
int max = 0;

【讨论】:

  • @user3336852 limits.h 不是库,而是包含整数的最小/最大值的标头。如果您使用的是标准的二进制补码 CPU,那么您可以使用 ((unsigned int)~0) &gt;&gt; 1 而不是 INT_MAX,但使用来自 limits.h 的宏是更便携和良好的编码习惯。
  • 这段代码有一些问题(main 缺少一个右括号作为开始),我认为让 OP 解决他们的编译错误比提供他们直接给出答案。
【解决方案2】:
min = max = wert[0];
for(i=1;i<N;i++)
        if (wert[i]<min)
        min = wert[i];//<--wert[i]=min;
        else if (wert[i]>max)
        max = wert[i];//<--wert[i]=max;

除了初始化之外,这些值是反向分配的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2020-08-27
    • 2020-10-03
    相关资源
    最近更新 更多