计算对数的平均值

时间:2019-11-01 06:07:31

标签: c

你好,我一直在用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;
 }

1 个答案:

答案 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