C语言编程已知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-06-17 12:05:45 浏览: 96
以下是实现该题目的代码:
ISaver.h:
```c
#ifndef _ISAVER_H_
#define _ISAVER_H_
double isaver(int *p, int num);
#endif
```
main.c:
```c
#include <stdio.h>
#include <stdlib.h>
#include "ISaver.h"
#define FILENAME "dat1.dat"
#define FILENAME_OUT "dat6.dat"
int main()
{
FILE *fp;
int a[100];
int i, cnt = 0;
double avg;
// 读取文件
fp = fopen(FILENAME, "rb");
if (fp == NULL) {
printf("Failed to open file %s\n", FILENAME);
exit(1);
}
fread(a, sizeof(int), 100, fp);
fclose(fp);
// 输出数组
printf("Array a[100]:\n");
for (i = 0; i < 100; i++) {
printf("%d ", a[i]);
if ((i + 1) % 10 == 0) {
printf("\n");
}
}
// 求平均值
avg = isaver(a, 100);
printf("Average: %f\n", avg);
// 输出小于平均值的数组元素
fp = fopen(FILENAME_OUT, "w");
if (fp == NULL) {
printf("Failed to open file %s\n", FILENAME_OUT);
exit(1);
}
printf("Elements less than average:\n");
for (i = 0; i < 100; i++) {
if (a[i] < avg) {
printf("%d ", a[i]);
fprintf(fp, "%d ", a[i]);
cnt++;
if (cnt % 10 == 0) {
printf("\n");
fprintf(fp, "\n");
}
}
}
printf("\nNumber of elements less than average: %d\n", cnt);
fprintf(fp, "\nNumber of elements less than average: %d\n", cnt);
fclose(fp);
return 0;
}
```
ISaver.c:
```c
#include "ISaver.h"
double isaver(int *p, int num)
{
int i;
double sum = 0.0;
for (i = 0; i < num; i++) {
sum += p[i];
}
return sum / num;
}
```
注意,需要在同一目录下创建dat1.dat和dat6.dat两个文件,dat1.dat中存放整型数据。
阅读全文