| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 898 人关注过本帖
标题:学生类链表-->yms123转移
只看楼主 加入收藏
流生
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-26
收藏
 问题点数:0 回复次数:5 
学生类链表-->yms123转移

朋友,请帮我找找错,谢谢!!!
朋友,请帮我找找错,谢谢!!!
错在哪?
错在哪?

好象是链表没有链起来啊!!!
#include "iostream.h"
#include "string.h"
#include "conio.h"
#include "iomanip.h"
int const M=3;
//定义学生类
class student{
private:
char *name;
int score; //[M];
static int number; //静态数据成员,统计总人数
static double average_marks; //静态数据成员,计算平均分
static long total_marks; //静态数据成员,计算总分
//student *next;
public:
student *next;
student(char *name1="wang",int score1=90); //默认参数的构造函数。
student(const student &s); //申明拷贝构造函数。
~student(); //申明析构函数
void Stu_Init(void);
void ob_print(void) //定义输出学生信息的函数
{
cout<<"The student: "<<name<<"'s score is : "<<score<<endl;
}
void static static_print(void); //申明静态成员函数
student & operator=(const student &s) //重载赋值运算符
{
if(this==&s) return *this;
total_marks-=score;
delete []name;
name=new char[strlen(s.name)+1];
strcpy(name,s.name);
score=s.score;
total_marks+=score;
return *this;
}
};

student::student(char *name1,int score1) //定义构造函数
{
name=new char[strlen(name1)+1];
strcpy(name,name1);
score=score1;
//number++;
//total_marks+=score;
}

void student::static_print(void) //定义静态成员函数
{
cout<<"Now:"<<endl;
cout<<"the number of student is :"<<number<<endl<<endl;
cout<<"the total marks is :"<<total_marks<<endl;
average_marks=double(total_marks)/number;
cout<<"the average marks is :"<<average_marks<<endl;
}

student::student(const student &s) //定义拷贝构造函数。
{
name=new char[strlen(s.name)+1];
strcpy(name,s.name);
score=s.score;
number++;
total_marks+=score;
}

void student::Stu_Init(void)
{
char na[13];
cout<<"请输入学生的名字:"<<endl;
cin>>na;
delete []name;
name=new char[strlen(na)+1];
strcpy(name,na);
cout<<"请输入该学生的分数: "<<endl;
cin>>score;
number++;
total_marks+=score;
cout<<name<<":"<<setw(6)<<score<<endl;
}

student::~student() //定义析构函数
{
delete []name;
number--;
total_marks-=score;
}

int student::number=0;
long student::total_marks=0;
double student::average_marks=0;

main(void)
{
student *head,*p,*q;
p=head=new student;
//p->next=head->next=NULL;
p->ob_print();
if(!p)
{
cout<<"ERROR!!!"<<endl;
return 0;
}
char c;
while(1)
{
head->Stu_Init();
head->ob_print();
cout<<"继续吗?(Y/N)"<<endl;
c=getch();
while(c!='Y'&&c!='y'&&c!='N'&&c!='n') c=getch();
if(c=='n'||c=='N') break;
q=head; head=q->next;
head=new student; head->next=NULL;
}
head=p;
//while(p!=NULL) { p->ob_print(); p=p->next;}
// p->ob_print();
p->next->ob_print();
//student s1("cheng",80),s2("wang",90),s3;
//s1.ob_print(); s2.ob_print(); s3.ob_print();
//student s4=s1; //等价于 student s4(s1) 前者是以“赋值”法调用拷
//贝构造函数,后者是以代入法调用。
//s4.ob_print();
student::static_print();
return 0;
}




[此贴子已经被作者于2005-11-27 20:27:23编辑过]

搜索更多相关主题的帖子: 链表 学生 
2005-11-27 20:22
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
不是VB就不要发到这里啊,,,有专门的

快上课了……
2005-11-27 20:36
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
这帖楼主发错地方了,去C++版块问问吧。
2005-11-27 20:37
class_cyl
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-30
收藏
得分:0 
你的115和116行的getchar()函数不能用的,要换成cin.get(),
就行了。
2005-12-01 21:26
class_cyl
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-30
收藏
得分:0 
我说的是编译,忘了看程序功能的错了,sorry。有空就看看。
2005-12-01 21:31
Amanbaiye
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-12-4
收藏
得分:0 

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
//定义学生类
class student
{
private:
char *name;
int score; //[M];
static int number; //静态数据成员,统计总人数
static long total_marks; //静态数据成员,计算总分
public:
student *next;
student(char *name1=" ",int score1=0); //默认参数的构造函数。
student(const student &s); //申明拷贝构造函数。
~student(); //申明析构函数
void ob_print(void) //定义输出学生信息的函数
{
cout<<"The student: "<<name<<"'s score is : "<<score<<endl;
}
void static static_print(); //申明静态成员函数
student& operator=(const student &s) //重载赋值运算符
{
if(this==&s) return *this;
delete []name;
name=new char[strlen(s.name)+1];
strcpy(name,s.name);
score=s.score;
next=NULL;
return *this;
}
};

student::student(char *name1,int score1) //定义构造函数
{
name=new char[strlen(name1)+1];
strcpy(name,name1);
score=score1;
next=NULL;
number++;
total_marks+=score;
}

void student::static_print() //定义静态成员函数
{
double average_marks;
cout<<"Now:"<<endl;
cout<<"the number of student is :"<<number<<endl;
cout<<"the total marks is :"<<total_marks<<endl;
average_marks=double(total_marks)/number;
cout<<"the average marks is :"<<average_marks<<endl;
}

student::student(const student &s) //定义拷贝构造函数。
{
name=new char[strlen(s.name)+1];
strcpy(name,s.name);
score=s.score;
number++;
total_marks+=score;
next=NULL;
}
student::~student() //定义析构函数
{
delete []name;
number--;
total_marks-=score;
}

int student::number=-1;
long student::total_marks=0;

int main()
{
student *head,*p,*q;
q=head=new student;
char c;
do{
char na[13];
int s;
cout<<"请输入学生的名字:"<<endl;
cin>>na;
cout<<"请输入该生的成绩:"<<endl;
cin>>s;
p=new student(na,s);
p->ob_print();
q->next=p;
q=p;
cout<<"继续吗?(Y/N)"<<endl;
cin.get(c);
while(c!='Y'&&c!='y'&&c!='N'&&c!='n') cin.get(c);
}while(c=='y'||c=='Y');
p=head->next;
while(p!=NULL) { p->ob_print(); p=p->next;}
student::static_print();
student s1("cheng",80),s2("wang",90);
//测试赋值函数与拷贝构造函数
s1.ob_print(); s2.ob_print();
student s4=s1; s4.ob_print();
student s5(s1);s5.ob_print();
return 0;
}

刚学C++ 请大家多多指点

2005-12-04 00:20
快速回复:学生类链表-->yms123转移
数据加载中...
 
   



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

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