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