找到min;最大

时间:2010-08-24 11:05:33

标签: c

我写了代码,但我没有得到最大值如何找到最大值

#include <stdio.h>
int main(void)
{
        double temp[0];
        float max,min;
        float i;
        short c,j,k;
        float sum=0;
        float nu[c];

        printf("Number of values :");
        scanf("%f",&i);

        for (c=1;i>=c;c++)
        {
          printf("values=");
          scanf("%f",&nu[c]);

          nu[c]=temp[0];

          for (j = 0; i>=j; j++)
          {
             if (temp[0]> nu[c])
             {
             //      nu[c]=temp[0];
                  max = temp[0];

             }
        }
        sum = sum + nu[c];
      }
      printf("sum = %f \n",sum);
      printf("maximum value = %f\n",max);
}

6 个答案:

答案 0 :(得分:2)

如果你使用-Wall运行你的编译器(你应该这样做),你应该已经看到了问题:

gcc -Wall -o foo foo.c
foo.c: In function 'main':
foo.c:35:14: warning: unused variable 'k'
foo.c:33:14: warning: unused variable 'min'
foo.c:62:1: warning: control reaches end of non-void function
foo.c:37:4: warning: 'c' is used uninitialized in this function

以下是有效程序的源代码:

#include <stdio.h>

int main(void)
{
   float max = 0; // hypothesis : numbers keyed by the users are > 0
   float min = 0; // hypothesis : numbers keyed by the users are > 0
   int i, c;
   float sum = 0;
   float nu[100]; // hypothesis : no more than 100 numbers keyed by user
                  // hypothesis : float type is enough to store numbers keyed by user
   printf("Number of values :");
   scanf("%d",&i);

   for (c = 0; c < i; c++)
   {
         printf("values=");
         scanf("%f",&(nu[c]));

         if (nu[c] > max) {
            max = nu[c];
         }

         if (min == 0) {
            min = nu[c];
         } else if(nu[c] < min) {
            min = nu[c];
         }

         sum = sum + nu[c];
   }
   printf("sum = %f \n",sum);
   printf("maximum value = %f \n", max);
   printf("minimum value = %f \n", min);

   return 0;
}

答案 1 :(得分:1)

你需要一个for循环而不是嵌套for循环。

  1. 使用第一个for循环获取输入
  2. 将输入数组的第一个元素指定给变量,调用此最大值
  3. 再次使用for循环比较数组的每个元素
  4. 如果您获得的值大于max,则使用以下代码

    将max更改为此值

    if(max&lt; a [i]) MAX = A [1];

  5. 在这些步骤结束时,您可以获得最大值。

    尝试将这些步骤放入C代码中,应该没问题。您编写的代码存在一些问题。我已经为你编写了一个小片段来获取元素数量的输入并将它们存储到你的数组中以用于浮点数。

    int number_of_elements;
    printf("Enter the number of elements:\n");
    scanf("%d", &number_of_elements);
    for(i=0;i<number_of_elements;i++)
    scanf("%f",&a[i]);
    

答案 2 :(得分:1)

以下是包含一些有用指针的代码:

#include <stdio.h>
int main(void)
{
        double temp[0];
        float max,min;
        float i;
        short c,j,k;                     // k isn't used anywhere.
        float sum=0;
        float nu[c];                     // c isn't set at this point so the
                                         //   runtime couldn't create an
                                         //   array anyway.

        printf("Number of values :");
        scanf("%f",&i);

        for (c=1;i>=c;c++)
        {
          printf("values=");
          scanf("%f",&nu[c]);
                                         // You should set min/max to nu[c]
                                         //   if c is 1 regardless.
          nu[c]=temp[0];                 // Why are you scanning into nu[c]
                                         //   then immediately overwriting?

          for (j = 0; i>=j; j++)         // Why figure out the max *every*
          {                              //   time you enter a value?
             if (temp[0]> nu[c])
             {
             //      nu[c]=temp[0];
                  max = temp[0];

             }
        }
        sum = sum + nu[c];
      }
      printf("sum = %f \n",sum);
      printf("maximum value = %f\n",max);
}

我还建议你回到my original answer并从中创建代码。它实际上是一种更干净的方式,而不是试图摆弄数组。

让我强调一点:如果你正在使用一个数组,你就是这么做的!

答案 3 :(得分:1)

或者

#include <stdio.h>

int main(void)

{ 
 float temp;

 int val,i,j,k;

 double sum = 0;

 double number[val];

 printf("Enter the number of values: ");

 scanf("%d", &val);

 double number[val];

 for(i=1; i <= val ;i++)
 { 
   printf("enter a value: ");

   scanf("%lf", &number[i]);

    sum = sum + number[i];

 }

 for(i=1;i<=val;i++)

        {

  for(j=i+1;j<=val;j++)

  {

   if(number[i] > number[j])

   { 

    temp=number[i];

    number[i]=number[j];

    number[j]=temp;

    }

  }

 }

 printf("Sum = %.lf\n", sum);

 printf ("Maximum element: %f\n",number[val]);  

 printf ("Minimum element: %lf\n", number[1]);  

}

答案 4 :(得分:0)

删除临时(无法看到它)

将max设置为某个初始值(例如,数组的第一个元素)

并将if语句更改为:

  if (nu[c]> max)
             {
                  max = nu[c];

             }

答案 5 :(得分:0)

这可能无法解决您的问题,但由于nu[c]值未定义,c似乎已分配给我了