用C++语言编写以下2程序1. 假设某文件中存放了10个数据,编写程序,求文件中奇数项数据的和以及偶数项数据

1. 假设某文件中存放了10个数据,编写程序,求文件中奇数项数据的和以及偶数项数据的乘积,并将这两个结果写入到一个文件中。
2.编写程序,将从键盘输入的10位同学的学号和成绩存入到文件student.dat中,再从文件中读取学生的信息,求出最高分,最低分和总分,并将最高分,最低分的学生姓名和成绩存入到文件cj.dat中。

急求啊!!!

#include "stdlib.h"
#include "iostream.h"
#include "stdio.h"
#define N 10
struct student
{
char code[12];
int score;
}s[N],g[N];
void main()
{
FILE *fp,*fp2;
int i,max(0),min(0),add(0);
for(i=0;i<N;i++)
{
cout<<"输入学号:";
cin>>s[i].code;
cout<<"输入成绩:";
cin>>s[i].score;
}
if((fp=fopen("student.dat","wb"))==NULL)
{
cout<<"can't open file.\n";
exit(1);
}
fwrite(s,sizeof(s),1,fp);
fclose(fp);
if((fp=fopen("student.dat","rb"))==NULL)
{
cout<<"can't open file.\n";
exit(1);
}
if((fp2=fopen("cj.dat","wb"))==NULL)
{
cout<<"can't open file.\n";
exit(1);
}
for(i=0;i<N;i++)
{
fread(&g[i],sizeof(student),1,fp);
add+=g[i].score;
cout<<g[i].code<<'\t'<<g[i].score<<'\t'<<'\n';
}
for(i=1;i<N;i++)
{if(g[max].score<g[i].score) max=i;
if(g[min].score>g[i].score) min=i;}
if((fp2=fopen("cj.dat","wb"))==NULL)
{
cout<<"can't open file.\n";
exit(1);
}
fwrite(&g[max],sizeof(s),1,fp2);
fwrite(&g[min],sizeof(s),1,fp2);

cout<<"最高分学生学号:"<<g[max].code<<"分数"<<g[max].score<<endl
<<"最低分学生学号:"<<g[min].code<<"分数"<<g[min].score<<endl
<<"所有学生成绩总和:"<<add<<endl;
fclose(fp);
fclose(fp2);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-02
稍微写了下第一题,,没认真调试,太晚了。。第二题留给lz自己写吧
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
class calc;
class file
{
string inputFile, outputFile;

file(const file&);
file();
public:
file(const string& in, const string& out):inputFile(in),outputFile(out){}
void input(calc& calcObj);
void output(const calc& calcObj);
};
class calc
{
long sum, acc;
vector<int>vst;
calc(const calc&);
friend class file;
public:
calc(): sum(0), acc(1){}
void solve();
};
void calc::solve()
{
string in,out;
in = "in";
out = "out";
file fInstence(in, out);

fInstence.input(*this);
for (int i = 0; i < vst.size(); ++i)
{
if (i % 2)
{
acc *= vst[i];
}
else
{
sum += vst[i];
}
}
fInstence.output(*this);
}
void file::input(calc& calcObj)
{
int num;
ifstream in(inputFile.c_str());
while(in>>num)
{
calcObj.vst.push_back(num);
}
in.close();
}
void file::output(const calc& calcObj)
{
ofstream out(outputFile.c_str());
out << calcObj.sum << ' ' << calcObj.acc << endl;
out.close();
}
int main()
{
calc obj;
obj.solve();
return 0;
}本回答被网友采纳
相似回答