【问题标题】:Determining the max and min value from inputs从输入中确定最大值和最小值
【发布时间】:2015-01-30 00:47:11
【问题描述】:

我希望系统能够从输入中确定最大值和最小值并将其保存在变量中,但我不确定如何去做。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int main(void)
{
    float startnummer;
    float hoppnummer;
    float svarighetsgrad;
    float domarpoang1;
    float domarpoang2;
    float domarpoang3;
    float domarpoang4;
    float domarpoang5;
    float domarpoang6;
    float domarpoang7;
    float max;
    float min;

    printf("Startnummer: \n");
    scanf_s("%f", &startnummer );

    printf("Hoppnummer:\n");
    scanf_s("%f", &hoppnummer);

    printf("Svarighetsgrad:\n");
    scanf_s("%f", &svarighetsgrad);

    printf("Domarpoang 1:\n");
    scanf_s("%f", &domarpoang1);

    printf("Domarpoang 2:\n");
    scanf_s("%f", &domarpoang2);

    printf("Domarpoang 3:\n");
    scanf_s("%f", &domarpoang3);

    printf("Domarpoang 4:\n");
    scanf_s("%f", &domarpoang4);

    printf("Domarpoang 5:\n");
    scanf_s("%f", &domarpoang5);

    printf("Domarpoang 6:\n");
    scanf_s("%f", &domarpoang6);

    printf("Domarpoang 7:\n");
    scanf_s("%f", &domarpoang7);
    system("cls");
    printf("Startnummer: %.1f \n", startnummer);
    printf("Hoppnummer: %.1f\n", hoppnummer);
    printf("Svarighetsgrad: %.1f\n", svarighetsgrad);
    printf("Domarpoang 1: %.1f\n", domarpoang1);
    printf("Domarpoang 2: %.1f\n", domarpoang2);
    printf("Domarpoang 3: %.1f\n", domarpoang3);
    printf("Domarpoang 4: %.1f\n", domarpoang4);
    printf("Domarpoang 5: %.1f\n", domarpoang5);
    printf("Domarpoang 6: %.1f\n", domarpoang6);
    printf("Domarpoang 7: %.1f\n", domarpoang7);

    printf("Hoppoang: \n");

    printf("Tryck tangent for nytt hopp!");
    getchar();
    getchar();
    return 0;
}

所以我要做的是让系统确定domarpoang 1-7的最大值和最小值并将其保存到变量max和min中。我不知道该怎么做,因为输入被保存到不同的变量中,所以它如何检查每个变量的最大值和最小值。

谢谢

【问题讨论】:

  • 数组float domarpoang[7]; 会更好。然后您可以使用for 循环来查找minmax。还允许您将scanf_sprintf 放在一个循环中。
  • for 循环是什么样子的?
  • max=domarpoang[0]; for(i=1;i&lt;7;i++) if(domarpoang[i]&gt;max) max=domarpoang[i];
  • 如何将 scanf_s 和 printf 放入该循环中?
  • 保罗鲁尼似乎已经回答了这个问题:)

标签: c visual-studio-2013


【解决方案1】:

如果您创建一个浮点数组并在循环中将它们传递给 scanf(我使用的是 scanf,因为我在 linux 上,但您应该能够将原理应用于 scanf_s)。我将你所有的数据都添加到了一个结构体中以对其进行整理。

然后,您可以在循环中跟踪最小值和最大值。

抱歉,变量名称可能看起来很奇怪,因为我不懂您的语言。

#include<stdio.h>
#include<stdlib.h>
#include <math.h>
#include <float.h>

struct mystruct
{
    float startnummer;
    float hoppnummer;
    float svarighetsgrad;
    float domarpoangs[7];
};

int main(void)
{
   struct mystruct data;
    float max = FLT_MIN;
    float min = FLT_MAX;

    printf("Startnummer: \n");
    scanf("%f", &data.startnummer );

    printf("Hoppnummer:\n");
    scanf("%f", &data.hoppnummer);

    printf("Svarighetsgrad:\n");
    scanf("%f", &data.svarighetsgrad);


    int i = 0;
    for(i = 0; i < 7; i++)
    {
        printf("domarpoang %d\n", i+1);
        float f;
        if(scanf("%f", &f) == 1)
        {
            if (f < min) min = f;
            if (f > max) max = f;
            printf("read float %f\n", f);
            printf("min=%f max=%f\n", min, max);

            data.domarpoangs[i] = f;
        } else
        {
            printf("error parsing float\n");
            exit(0);
        }

    }

    system("cls");
    printf("Startnummer: %.1f \n", data.startnummer);
    printf("Hoppnummer: %.1f\n", data.hoppnummer);
    printf("Svarighetsgrad: %.1f\n", data.svarighetsgrad);
    for(i = 0; i < 7; i++)
    {
        printf("Domarpoang %d: %.1f\n", (i+1), data.domarpoangs[i]);
    }

    printf("min=%f max=%f\n", min, max);

    printf("Hoppoang: \n");

    printf("Tryck tangent for nytt hopp!");
    getchar();
    getchar();
    return 0;
}

【讨论】:

  • 不客气。你应该读一本初学者的 C 书,所有这些东西都会变得更容易理解。
  • 我会这样做的。请你再帮我一件事。我想添加一个名为“TheResult”的新变量,用最小和最大“domarpoangs”(你帮我确定的那些)减去所有“domarpoangs”的总和,然后用其余的 domarpoangs 计算平均值(没有最大值和最小值)。如果您能做到这一点,我将不胜感激。
  • 你应该问一个新问题。
猜你喜欢
  • 1970-01-01
  • 2018-03-03
  • 2020-08-16
  • 2018-07-08
  • 1970-01-01
  • 2015-06-29
  • 2011-07-13
  • 2017-06-30
  • 2013-11-15
相关资源
最近更新 更多