编写一个输入数值的程序,然后在循环中逐个输入这些值(双精度型),最后输出它们的和,最大值和最小值。
我为此作业编写了代码,但我收到了错误
#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:错误:']'标记之前的预期表达式
答案 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)
答案 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]);
}