已知dat1.dat存放了一系列整型数据。 要求: 1)用dat1.dat中的前100个数据给数组int a[100]赋值,并在屏幕上输出(每行10个元素)。 2)使用函数 double isaver(int *p,int num) { } 求数组a中所有数组元素平均值。 3)把该函数放在头文件ISaver.h中以便在主函数中调用该函数。把所有小于平均值的数组元素(每行10个元素)和小于平均值的数组元素个数输出出来。(在屏幕上和数据文件d:\dat6.dat中同时输出)
时间: 2023-12-10 08:37:52 浏览: 77
test100sell.rar_Visual_C++_
以下是实现代码:
ISaver.h头文件:
```c
#ifndef ISaver_h
#define ISaver_h
double isaver(int *p, int num);
#endif /* ISaver_h */
```
isaver.c源文件:
```c
#include <stdio.h>
#include "ISaver.h"
double isaver(int *p, int num) {
int sum = 0;
for (int i = 0; i < num; i++) {
sum += *(p + i);
}
double avg = sum / (double)num;
return avg;
}
```
main.c主函数文件:
```c
#include <stdio.h>
#include <stdlib.h>
#include "ISaver.h"
#define FILENAME "d:/dat1.dat"
#define OUTFILENAME "d:/dat6.dat"
int main() {
FILE *fp, *outfp;
int a[100];
double avg;
int count = 0;
fp = fopen(FILENAME, "rb");
if (fp == NULL) {
printf("无法打开文件 %s\n", FILENAME);
exit(1);
}
fread(a, sizeof(int), 100, fp);
printf("数组a的值为:\n");
for (int i = 0; i < 100; i++) {
printf("%d ", a[i]);
if ((i + 1) % 10 == 0) {
printf("\n");
}
}
avg = isaver(a, 100);
printf("\n数组a的平均值为:%.2f\n", avg);
outfp = fopen(OUTFILENAME, "wb");
if (outfp == NULL) {
printf("无法打开文件 %s\n", OUTFILENAME);
exit(1);
}
printf("\n小于平均值的数组元素为:\n");
for (int i = 0; i < 100; i++) {
if (a[i] < avg) {
printf("%d ", a[i]);
fprintf(outfp, "%d ", a[i]);
count++;
if (count % 10 == 0) {
printf("\n");
fprintf(outfp, "\n");
}
}
}
printf("\n小于平均值的数组元素个数为:%d\n", count);
fprintf(outfp, "小于平均值的数组元素个数为:%d\n", count);
fclose(fp);
fclose(outfp);
return 0;
}
```
阅读全文