( 100分 ) 已知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中同时输出) 题目中使用的数据文件请在附件中下载,解压后可使用。
时间: 2024-02-21 19:00:06 浏览: 84
test100sell.rar_Visual_C++_
好的,我来解答你的问题。
首先,你需要按照题意读取数据文件dat1.dat,并将前100个整型数据存放到数组a中,然后输出数组a的内容,每行10个元素。代码如下:
```c++
#include <iostream>
#include <fstream>
#include "ISaver.h" // 包含头文件ISaver.h
using namespace std;
const int MAX_LEN = 100;
int main() {
int a[MAX_LEN];
ifstream fin("dat1.dat", ios::binary);
if (!fin) {
cerr << "Error opening file!" << endl;
return 1;
}
fin.read((char*)a, sizeof(int) * MAX_LEN);
fin.close();
// 输出数组a的内容
for (int i = 0; i < MAX_LEN; i++) {
cout << a[i] << " ";
if ((i + 1) % 10 == 0) {
cout << endl;
}
}
double avg = isaver(a, MAX_LEN); // 调用isaver函数计算平均值
// 输出小于平均值的数组元素
ofstream fout("d:\\dat6.dat", ios::binary);
int cnt = 0;
for (int i = 0; i < MAX_LEN; i++) {
if (a[i] < avg) {
cout << a[i] << " ";
fout.write((char*)&a[i], sizeof(int));
cnt++;
if (cnt % 10 == 0) {
cout << endl;
}
}
}
cout << "Total: " << cnt << endl;
fout.close();
return 0;
}
```
其中,isaver函数的定义如下:
```c++
double isaver(int *p, int num) {
double sum = 0;
for (int i = 0; i < num; i++) {
sum += *(p + i);
}
return sum / num;
}
```
最后,头文件ISaver.h的内容如下:
```c++
#ifndef _ISAVER_H_
#define _ISAVER_H_
double isaver(int *p, int num);
#endif // _ISAVER_H_
```
阅读全文