已知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 13:01:29 浏览: 143
6ES7214-1AG40-0XB0_V04.02.00固件升级包.zip
好的,您的问题是关于读取数据文件并进行数组操作的。以下是解决方案:
1. 读取数据文件并给数组赋值:
```c++
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("dat1.dat", ios::binary);
int a[100];
for (int i=0; i<100; i++) {
fin.read((char*)&a[i], sizeof(int));
}
fin.close();
// 输出数组元素(每行10个)
for (int i=0; i<100; i++) {
cout << a[i] << " ";
if ((i+1) % 10 == 0) cout << endl;
}
return 0;
}
```
2. 计算数组元素平均值:
```c++
double isaver(int *p, int num) {
double sum = 0;
for (int i=0; i<num; i++) {
sum += p[i];
}
return sum / num;
}
```
3. 放置在头文件ISaver.h中:
```c++
#ifndef ISaver_h
#define ISaver_h
double isaver(int *p, int num);
#endif
```
4. 在主函数中调用isaver()函数并输出结果:
```c++
#include <iostream>
#include <fstream>
#include "ISaver.h"
using namespace std;
int main() {
ifstream fin("dat1.dat", ios::binary);
int a[100];
for (int i=0; i<100; i++) {
fin.read((char*)&a[i], sizeof(int));
}
fin.close();
// 输出数组元素(每行10个)
for (int i=0; i<100; i++) {
cout << a[i] << " ";
if ((i+1) % 10 == 0) cout << endl;
}
double avg = isaver(a, 100);
cout << "平均值为:" << avg << endl;
// 输出小于平均值的数组元素和个数
int count = 0;
ofstream fout("d:/dat6.dat", ios::binary);
for (int i=0; i<100; i++) {
if (a[i] < avg) {
fout.write((char*)&a[i], sizeof(int));
cout << a[i] << " ";
count++;
if (count % 10 == 0) cout << endl;
}
}
fout.close();
cout << endl << "小于平均值的元素个数为:" << count << endl;
return 0;
}
```
阅读全文