Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 编写一个访问数组的主程序_C_Arrays - Fatal编程技术网

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

C 编写一个访问数组的主程序,c,arrays,C,Arrays,我需要家庭作业帮助!这不是一项到期的作业,所以请不要评论说我需要自己解决这个问题。只是做一些额外的练习来准备考试 我需要编写一个主程序,计算数字6.0在一个大的双精度数组中出现的次数,然后打印出数组中的元素数和6.0的值数。另外,计算并打印数组中所有元素的平均值,精确到小数点后7位 使用for循环 阵列fArray[]在名为arraypractice.h的文件中定义。添加到 您的项目目录,并在代码中引用它,如下所示: int main(void) { #include "arraypractic

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

我需要编写一个主程序,计算数字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));

您需要在教程中查找
中的
循环,以及其他内容:p

关于小数点后7位的平均值,您的问题位于精度主题下。我用的是
%12.7f
f
表示双精度,而
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;
}
#包括
内部主(空){
双法拉利[10]={1.2,12.6,6.0,5.3,3.2,6.0,5.0,60.3,6.0,1};
整数计数=0;
六位数=0;
双和=0;
对于(int i=0;i<(sizeof(fArray)/sizeof((fArray)[0]);i++)
{
计数+=1;
总和+=法拉利[i];
if(fArray[i]==6.0){
六++;
}
}
printf(“找到的元素总数:%d\n六个:%d\n平均值为:%12.7f”,计数,六个,总和/计数);
返回0;
}
编辑 上面的代码可以正常运行,但是对于从文件中读取双倍的代码。您必须更详细地指定文件的外观,否则可能需要回答另一个关于堆栈溢出的问题

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

FILE*f=fopen(“FILE.txt”、“r”);
如果(f==NULL)
返回1;
双值[10];
无符号整数i;
对于(i=0;i<10;++i){
fscanf(f、%lf)和值[i];
printf(“%lf\n”,值[i]);
}
关闭(f);

听说过
for
循环吗?如果你这样做是为了准备考试,那么从某种意义上说,你更需要自己解决这个问题,因为你在考试中无法访问堆栈溢出(给出合理的监控)。可能重复的指令会告诉你放入
#包括“arraypracce.h”
在你的main中?我发现一个作业会要求学生检查浮点类型的相等性,这有点令人不安。即使6.0可以用双精度浮点表示法表示,它设置的优先级也不好。为什么不直接使用
count
作为数组索引?@AndrewHenle因为OP似乎不熟悉“for”循环,所以我使用了一个新变量来显示其典型用法:)
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);