到目前为止,我写了这个用户输入并根据它们计算平均值
SET search_path = schema1, public;
INSERT INTO "Sities" (name, country, weather_id_api)
SELECT 'Orenburg', 'RU', 234234
WHERE NOT EXISTS (SELECT name FROM "Sities" WHERE name='Orenburg');
我希望用户输入-1表示他们已完成输入数据;我无法弄清楚如何做到这一点。所以,如果可能,有人可以解释或给我一个关于如何做的想法
谢谢!
答案 0 :(得分:0)
你只需要平均值。无需存储所有输入的数字。
你只需要在-1
存储在变量之前输入数字,比如count
,它在循环的每次迭代时递增,而变量如sum
则保持为n
的总和。到目前为止输入的所有数字。
在您的程序中,在使用之前尚未初始化n
。 average
只有垃圾,其价值不确定。
您甚至不需要sum/count
变量。您可以在打印平均值时打印int count=0;
float num, sum = 0;
while(scanf("%f", &num)==1 && num!=-1)
{
count++;
sum += num;
}
。
待办事项
-1
停止阅读CASE WHEN
。
答案 1 :(得分:0)
#include <stdio.h>
int main()
{
int i = 0;
float num[100], sum = 0.0, average;
float x = 0.0;
while(1) {
printf("%d. Enter number: ", i+1);
scanf("%f", &x);
if(x == -1)
break;
num[i] = x;
sum += num[i];
i++;
}
average = sum / i;
printf("\n Average = %.2f", average);
return 0;
}
如果您不希望以后使用数据,则无需数组num []。 希望这会有所帮助。!!
答案 2 :(得分:0)
无需声明数组来存储输入的数字。您只需检查下一个输入的数字是否等于-1,如果不是,则将其添加到总和中。
注意根据分配,用户必须输入整数。平均值可以计算为整数或浮点数。
程序可以按以下方式查看
#include <stdio.h>
int main( void )
{
unsigned int n = 0;
unsigned long long int sum = 0;
printf("Enter a sequence of positive numbers (-1 - exit): ");
for (unsigned int num; scanf("%u", &num) == 1 && num != -1; )
{
++n;
sum += num;
}
if (n)
{
printf("\nAverage = %llu\n", sum / n);
}
else
{
puts("You did not eneter a number. Try next time.");
}
return 0;
}
程序输出可能看起来像
Enter a sequence of positive numbers (-1 - exit): 1 2 3 4 5 6 7 8 9 10 -1
Average = 5
如果您需要将平均值计算为浮点数,则只需将变量sum
声明为具有类型double
,并使用printf
语句中相应的格式说明符输出平均。