编写一个访问数组的主程序

时间:2018-04-05 17:19:31

标签: c arrays

我需要功课帮助!这不是一个到期的任务,所以请不要说任何评论说我需要自己解决这个问题。只是做一些额外的练习来准备我的考试。

我需要编写一个主程序来计算大型双精度数中6.0的出现次数,然后打印出数组中元素的数量和6.0的值。另外,计算并将平均值打印到数组中所有元素的7位小数。

使用for循环。

数组fArray []在名为arraypractice.h的文件中定义。添加到 您的项目目录并在您的代码中引用它,如下所示:

int main(void)
{
#include "arraypractice.h“
.

我只能确定阵列的长度,而且我不知道从哪里开始:

int main(void)
   {
#include "arraypractice.h"

   int n;
   n = sizeof(fArray);
   int size;

   printf("Size of the given array is %d\n", n / sizeof(double));

1 个答案:

答案 0 :(得分:1)

您需要在教程中查找for循环,其中包括:p

关于7位小数的​​平均值的问题是在精度的主题下。我使用的是%12.7ff用于双精度,12.7表示小数点前12位和后7位数。

#include <stdio.h>

int main(void) {
  double fArray[10] = {1.2, 12.6, 6.0, 5.3, 3.2, 6.0, 5.0, 60.3, 6.0, 1.1};
  int count = 0;
  int sixes = 0;
  double sum = 0;

  for (int i = 0; i < (sizeof(fArray) / sizeof((fArray)[0])); i++)
  {
      count +=1;
      sum += fArray[i];
      if(fArray[i] == 6.0){
          sixes ++;
      }
  }
  printf("Total elements: %d \n Sixes found: %d \n Average is: %12.7f", count, sixes, sum/count);
  return 0;
}

修改

上面的代码运行正常,但是从文件中读取双打。您必须指定更多文件的外观,否则可能需要在Stack Overflow上另一个问题 SEARCH

...但是这个(未经测试的)代码示例应该让你开始:)

FILE *f=fopen("file.txt","r");

if(f==NULL)
    return 1;

double values[10];
unsigned int i;         

for(i = 0; i < 10; ++i) {
    fscanf(f, "%lf",&values[i]);
    printf("%lf\n",values[i]);
}
close(f);