你好,我一直在用C语言开发一个程序,该程序可以计算数字,并且可以给我一个平均值。现在,我在实现代码时遇到问题,该代码将要求用户输入任意数量的货币对并计算平均值。以下是我一直在努力的代码。我可以将while(计数<5)更改为10,以获得更多对,但是我的目标是要求用户输入任何PAIR,然后计算平均值(重复计算)。
#include <stdio.h>
int main () {
int count;
double avg, value, weight, sum, sumw;
count = 0;
sum = 0;
sumw = 0;
avg = 0.0;
while (count < 5) {
printf("Enter value and it's weight:");
scanf("%lf %lf", &value, &weight);
if (weight >= 0) {
sumw = sumw + weight;
sum = sum + value * weight;
count = count + 1;
}
else { printf("weight must be positive\n");
}
}
avg = sum / sumw;
printf("average is %lf\n " , avg );
return 0;
}
**第二部分**在此方面,我不太确定如何使其达到PAIRS加上计算平均值。 ej:2 1,2 4,4 4等。
#include<stdio.h>
void main()
{
int i,n,Sum=0,numbers;
float Average;
printf("\nPlease Enter How many pairs do you want?\n");
scanf("%d",&n);
printf("\nPlease Enter the elements one by one\n");
for(i=0;i<n;++i)
{
scanf("%d",&numbers);
Sum = Sum +numbers;
}
Average = Sum/n;
printf("\nAverage of the %d Numbers = %.2f",n, Average);
return 0;
}
答案 0 :(得分:2)
但是我的目标是要求用户输入任何对,然后计算
那么,那么您需要将值存储在某个地方。建议:具有以下结构:
typedef struct
{
double value;
double weight;
} Pair;
然后,一旦要从用户读取对数,就创建一个对数组:
Pair* pairs = malloc(number * sizeof(*pairs));
非常重要:每个malloc
都应带有free
以避免内存泄漏。一般建议:free
甚至在malloc
之前立即计划scanf("%lf %lf", &pairs[i].value, &pairs[weight].weight);
。
现在在循环中,您可以填充配对:
if (weight >= 0)
{
// ...
}
else
{
// printf("weight must be positive\n");
}
类似地,您可以在下一个循环中或其他目的使用数组中的对。
旁注:
scanf
如果用户输入的是负值,则您将跳过某些值(或按照建议的循环方式,仍保留负值!)。
您可以改为在嵌套循环内读取直到值有效。另外还要考虑用户提供非数字输入!在这种情况下,您根本看不懂双精度字。因此,一般规则是:始终检查if(scanf("%lf %lf", &value, &weight) != 2 || value < 0 || weight < 0)
// ^
// assuming negative value not desired either
{
// user input was invalid!!!
}
的结果:
CurrentAcademicWeek=TextValue of AcademicWeekofTerm where Calendar[WeekOffset]=0