编写一个程序,输入多个值,然后在循环中一个一个地输入这些值(double类型),最后输出它们的总和、最大值和最小值。
我写了这个作业的代码,但我得到了错误
#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: 错误:']' 标记前的预期表达式
最佳答案
在 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
列为空。
您会惊讶于您开始像计算机一样思考的速度如此之快,只是希望它不会在此过程中将所有这些社交技能从您的脑海中挤出:-)
关于c - 用数组求和,最小值,最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547633/