用数组求sum,min,max

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

我为这个作业编写了代码,但是我收到了错误

#include  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:错误:’]’令牌之前的预期表达式

在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列为空,则会遇到set sum to sum + curr

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

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

你必须先输入i:

 scanf("%f",&i); 

然后声明数组:

 float nu[i]; 

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

更换

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

或这个

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

试试这个…

 #include  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 max) max = number[k]; } printf("Sum = %.lf\n", sum); printf ("Maximum element: %.f\n",max); printf ("Minimum element: %.lf\n",min); }