C:最近的最大数组值

时间:2015-12-06 18:10:55

标签: c arrays max

在一系列温度中,每一天都是一整个月:

int april[31];
    int days;
    int i=0, maxpos, max;

    printf("How many days are in this month?\n");
    scanf("%d", &days);

    if (days < 0)
       printf("Unreceivable number of days\n");
    else{

         for(i=0; i <= days-1; i++)
         {
             printf("Day %d: Give today's temperature: \n", i+1);
             scanf("%d", &april[i]);
         }

         for(i=0; i <= days-1; i++)
             printf("%Day %d  = %d\n", i+1, april[i]);  

         maxpos=0; 
         max = april[0];   

         for(i=0; i <= days-1; i++)
         {
              if (april[i] > max)
              {
                 max = april[i];
                 maxpos = i;
              }
         }  

         printf("The maximum temperature of the month is %d on Day %d of the month\n", max, maxpos+1);

     }

程序必须打印出最高温度和发生的日期,例如:

The maximum temperature is 42 on Day 2 of the month

但是,如果这个月的两天温度相同怎么办? 我想屏幕会显示第一个/更老的温度:

Day 1 = 23
Day 2 = 33
Day 3 = 33
Day 4 = 30
Day 5 = 33

在这种情况下,第2天。

如何打印最新的最新最高温度(上例中的第5天)?

3 个答案:

答案 0 :(得分:3)

使用:

if (april[i] >= max)

如果temp等于当前最大值,它将保存位置,因此你将有最后一天的温度。

答案 1 :(得分:1)

在您的代码中

if(april[i]>max)

必须更改为

if(april[i]>=max)

原因是这样的,在第一种情况下,一旦通过输入if语句分配了最大值,再次重复相同的值时,它将不会输入if块作为max&gt; max为false,但在第二种情况下,当max> = max为true时,编译器将输入if块并更新其值。

答案 2 :(得分:0)

简单写一下

if (april[i] >= max) instead of if (april[i] > max)

这将找到最大值,也是最近的一个,我指的是最后一个,因为它正在检查即将到来的索引值是否与前一个相同或更大,如果是这样只是更新最大值。