用数组求sum,min,max

时间:2010-08-23 12:46:11

标签: c

编写一个输入数值的程序,然后在循环中逐个输入这些值(双精度型),最后输出它们的和,最大值和最小值。

我为此作业编写了代码,但我收到了错误

#include <stdio.h>

int main(void)
{
        float a;
        float i;
        short c;
        float sum;
        float nu[];

        i=nu[];

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

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

                sum = sum + nu[c];
        //      printf("Sum = %f\n",sum);
        }

        printf("sum = %f \n",sum);
//      printf("Number of values :");
//      scanf("%f",&i);
}

错误是number.c:在函数'main'中: number.c:9:错误:'nu'中缺少数组大小 number.c:11:错误:']'标记之前的预期表达式

6 个答案:

答案 0 :(得分:10)

在C中,您需要指定数组的大小,例如使用float nu[100];,但如果您认为需要存储所有这些值,那么就会出现错误的树。最小值,最大值和总和都可以在运行中计算,无需返回并检索任何以前的数字。

您需要做的就是一次输入一个,并为每个输入:

  • 如果它是当前最高的第一个或更高,请将当前设置为高。
  • 如果它是当前低电平的第一个或更低,则将电流设置为低电平。
  • 将其添加到总和中。

顺便说一句,应该初始化为零以开始。

就伪代码而言,从这开始:

set sum, high and low all to zero

scan "number of values" into count

for curr = one to count, inclusive:
    scan "current number" into num

    set sum to sum + num

    if curr is one, or num is less than low:
        set low to num

    if curr is one, or num is greater than high:
        set high to num

output "Minimum = " low
output "Maximum = " high
output "Sum     = " sum

理解它的最好方法是获得一张(非常非技术性的)纸张并写出这样的表格:

+-----+------+-----+-----+-------+------+
| sum | high | low | num | count | curr |
+-----+------+-----+-----+-------+------+
|     |      |     |     |       |      |
|     |      |     |     |       |      |
|     |      |     |     |       |      |
|     |      |     |     |       |      |
|     |      |     |     |       |      |
+-----+------+-----+-----+-------+------+

然后逐步运行该程序,随时输入或更改该表中的值。您甚至可以检测到何时使用未初始化的值,例如,如果set sum to sum + curr列为空,则会遇到sum

你会惊讶地发现你开始像计算机那样快速地思考,只希望它不会在这个过程中将所有这些社交技能从头脑中推出: - )

答案 1 :(得分:0)

  • 摆脱“i = nu []”这一行。
  • 确保使用相关数量的元素初始化传入的数组

答案 2 :(得分:0)

您必须先输入i:

scanf("%f",&i);

然后声明数组:

float nu[i];

答案 3 :(得分:0)

如果您之前不知道数组维度,请使用动态分配。

替换

float nu[];

i=nu[];

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

使用:

float *nu=0;
printf("Number of values :");
scanf("%f",&i);
nu=malloc(i*sizeof*nu); if(!nu) fprintf(stderr,"not enough memory"),exit(1);
...
free(nu);

答案 4 :(得分:0)

试试这个......

#include <stdio.h>

int main(void)

    {   
        float temp;
        int val,i,j,k;
        double sum = 0;
        double max,min;


        printf("Enter the number of values: ");
        scanf("%d", &val);
        double number[val];

        for(i=0; i < val ;i++)
        { 
            printf("enter a value: ");
            scanf("%lf", &number[i]);
            sum = sum + number[i];
        }

        min = number[0];
        max = number[0];

        for(j=0;j<val;j++)
        {
            if(number[j] < min)
            min = number[j];
        }


        for(k=0;k<val;k++)
        {
               if(number[k] > max)
            max = number[k];
        }

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

        printf ("Maximum element: %.f\n",max);  

            printf ("Minimum element: %.lf\n",min);  

    }

答案 5 :(得分:0)

或者

#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]);  

}