如何在C中编写计算各项之和的for循环?

问题描述 投票:0回答:1

我正在编写一项作业,要求我执行以下操作:

1。用户输入:十进制数字列表。 (各项代表usd(美元)的数值,第一项是美元兑换比例,

(例如,1usd = 3.58another_currency。)

  1. 将值转换为另一种货币(转换后的项目将在另一个列表中)

2.1 例如: 原:[3.58 12 11.50 3.20 4.10] -> 转换后:[(42.96), (41.17), ....] (接下来的每一项乘以 3.58)

  1. 以漂亮的表格形式呈现,表格的最后一行应该是美元的总和转换后的货币的总和

看来我已经正确完成了第一步和第二步。但在计算其他货币的总和时,我遇到了问题。只有美元的总和恰好是正确的,但其他货币的总和就有问题。它不仅不正确,而且每次运行时总和都会改变。 绿色的是正确的,红色的是不正确的。

我在两个不同的数组上激活了相同的函数,但它只正确计算了其中一个总和。

我的.H 文件(doll.c):

#define SIZE 10

void dollar_to_shekel(float[], float[]);

void print_array(float[], float[]);

float sum_array(int, float[]);

我的.C 文件(doll.c):

#include <stdio.h>
#include "doll.h"

void dollar_to_shekel(float usd[], float ils[])
{
  int i;
  for(i=1; i<SIZE; i++)
  {
    /*the first element in the received list, in index 0, is the dollar ratio*/
    ils[i-1] = usd[i] * usd[0];
  }
}

void print_array(float usd[], float ils[])
{
  int i;
  for(i=1; i<SIZE; i++)
  {
    printf("%.2f \t \t \t \t %.2f\n", usd[i], ils[i-1]);
  }
}

float sum_array(int x, float arr[])
{
  int i;
  float sum = 0;
  for(i=x; i<SIZE; i++)
  {
    sum = sum + arr[i];
  }
  return sum;
}

int main()
{
  float usd[SIZE];
  float ils[SIZE];
  int i;
  printf("Insert a list of numbers:");
  for(i=0; i<SIZE; i++)
  {
    scanf("%f", &usd[i]);
  }

  dollar_to_shekel(usd, ils);
  printf("$ \t \t \t \t IS\n");
  print_array(usd,ils);
  printf("%.2f \t \t \t \t %.2f\n", sum_array(1,usd), sum_array(0,ils));

  return 0;
}

我真的不知道程序在计算一列总和时失败的位置和原因,但在另一列上却完成了工作。

arrays c scanf
1个回答
0
投票

就像在上一次迭代中dollar_to_shekel的循环中一样,您分配了ils[SIZE-1-1],这是正确的,因为您从0开始并且要计算SIZE-1值,所以您没有分配ils[SIZE-1] ,但它包含在 sum_array 的总和中。 ils[SIZE-1] 是一个“随机”值,因此总和的结果也是随机的。 解决方案是求和直到 SIZE-x:

    float sum_array(int x, float arr[])
    {
      int i;
      float sum = 0;
      for(i=x; i<SIZE-x; i++)
      {
        sum = sum + arr[i];
      }
      return sum;
    }
© www.soinside.com 2019 - 2024. All rights reserved.