| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:我自己编了一道C++题,有点需要改正,大家不妨看看!谢谢
只看楼主 加入收藏
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
收藏
 问题点数:0 回复次数:3 
我自己编了一道C++题,有点需要改正,大家不妨看看!谢谢

/*从键盘上输入5个学生的数据(包括学号,姓名,年龄,3门功课的分数),
然后求出每个人的平均分,把学号,姓名,和平均分输出到磁盘文件stud.rec中,
最后从stud.rec文件中读出这些数据,并在屏幕上显示出来*/
#include"iostream.h"
#include"fstream.h"
#include"string.h"

class student
{
protected:
int number;
char *name;
int age;
float math;
float eng;
float chinese;
float avg;
public:
student(int num,char *n,int age1,float math1,float eng1,float chinese1,float avg1)
{

name=new char[strlen(n)+1];
strcpy(name,n);
number=num;
age=age1;
math=math;
eng=eng1;
chinese=chinese1;
avg1=(math1+eng1+chinese1)/3;
avg=avg1;

ofstream fout("studrec.txt"); //创建输出文件
if(!fout)
{
cout<<"cannot open file studrec\n";

}

fout<<num<<" "<<n<<" "<<avg1<<" "<<endl;
fout.close();

ifstream fin("studrec.txt",ios::end); //写入数据
if(!fin)
{
cout<<"cannot open file studrec\n";

}
char str[20]="\0";
int numb;
float av;
fin>>numb;
fin>>str;
fin>>av;
fin.close();
cout<<number<<" "<<name<<" "<<avg<<endl;

}

~student()
{
delete[]name;
}
};

int main()
{
/* student *ob[5];
for(int i=0;i<5;i++)
{
ob[i].student(114,"linh",21,87,76,80,0);
}*/

student ob1(114,"linh",21,87,76,80,0);
student ob2(115,"fdg",23,84,23,78,0);
student ob3(116,"bf",22,87,75,87,0);
student ob4(117,"df",20,89,96,90,0);
student ob5(118,"lh",21,89,73,70,0);
return 0;
}
这程序有一些需要改正的:我要输入五个人的信息,但是我的文件里只能储存最后输入的也就是只显示ob5的信息,前面被覆盖了,这点需要改正,还有一点就是我想通过数组来输入
/* student *ob[5];
for(int i=0;i<5;i++)
{
ob[i].student(114,"linh",21,87,76,80,0);
}*/
但总提示 error C2228: left of '.student' must have class/struct/union type
这是什么原因啊,请赐教!谢谢

搜索更多相关主题的帖子: float int stud 
2007-06-27 16:36
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
ob[i].student(114,"linh",21,87,76,80,0);

显然错误,student是构造函数而不是成员函数。

你可以增加成员函数设置学生信息。



你还没理解构造函数和类,建议看书。
good luck。

Fight  to win  or  die...
2007-06-27 17:49
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
没错.. 构造函数(Constructor)只在创建对象时由系统自动调用
(这里是形如student ob3(116,"bf",22,87,75,87,0);这样的语句)..
当对象创建后, 不可显式调用构造函数..
所以你无法用(除了第一次)构造函数(student())改变对象成员值..
解决方法:
添加例如名为SetVal(参数表)这样的方法..
为了简洁, 可以将构造函数改写为这样:
student(参数表){
SetVal(参数表);
}

女侠,约吗?
2007-06-27 19:52
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
收藏
得分:0 
thank you

做你自己! everything will go! lanfei_1234@
2007-06-27 20:59
快速回复:我自己编了一道C++题,有点需要改正,大家不妨看看!谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044340 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved