注册 登录
编程论坛 C++教室

大家看看,这程序运行后有错

MCMOO 发布于 2010-06-03 11:23, 533 次点击
这个程序运行后 输入人名后无法运行的,停止工作,不知道哪里错了,求解。
#include <iostream>
#include <string>
using namespace std;
class stud
{
public:
 static  double sum;//sum为总分
 static  int num;//num为人数
 void setdate(int No,char Name,double Deg)
 {
  stud::no=No;
  stud::name=Name;
  stud::deg=Deg;
 }
 void disp()
 {
  cout<<"该学生的名字为:"<<stud::name<<endl;
  cout<<"该学生的学号为:"<<stud::no<<endl;
  cout<<"该学生的成绩为:"<<stud::deg<<endl;
 }
 static void avg()
 {
  cout<<"平均分为:"<<sum/num<<endl;
 }
//private:
 char no,name;//no为学号,name为名字
 double deg;//deg为成绩
};
int stud::num=0;
double stud::sum=0;
void main()
{
 
  cout<<"请输入学生的名字:"<<endl;
  char Name;
  cin>>Name;
  cout<<"请输入学号:"<<endl;
  int No;
  cin>>No;
  cout<<"请输入成绩:"<<endl;
  double Deg;
  cin>>Deg;
  stud Stud;
  Stud.setdate(No,Name,Deg);
  Stud.num=Stud.num+1;
  Stud.sum=Stud.sum+Deg;
  stud* Stu=new stud[100];
  Stu[No].name=Name;
  Stu[No].no=No;
  Stu[No].deg=Deg;
  cout<<"总人数为:"<<Stud.num<<endl;
  cout<<"总分数为:"<<Stud.sum<<endl;
  

}
3 回复
#2
ciweitou1632010-06-03 13:38
你的人名是定义成了char型的,所以只能输入一个字符。
建议换成string型或字符数组也行。
#3
apull2010-06-03 14:00
void setdate(int No,char Name,double Deg)
{
  stud::no=No;
  stud::name=Name;
  stud::deg=Deg;
}
定义可能有问题,建议使用指针。
void setdate(int No,char* Name,double Deg)
{
  stud::no=No;
    strcpy (stud::name,Name);    前提是stud::name有足够的空间容纳Name
  //stud::name=Name;
  stud::deg=Deg;
}
#4
MCMOO2010-06-04 00:14
谢谢。用指针了。
1