请C++高手们帮我找一下以下程序的错误:我在VC++6.0下编译构建都没错,但执行时总是只是达不到目的。谢谢

这是一个裁判打分的简单程序:通过对象的操作输入选手信息后,同时输出选手信息。#include<iostream>#include<string>usingnamespac... 这是一个裁判打分的简单程序:通过对象的操作输入选手信息后,同时输出选手信息。
#include<iostream>
#include<string>
using namespace std;
class player
{
private:
int num;
char *name;
static int n; //n表示参赛人数
static int m; //m表示裁判人数
public:
player(void);
~player(void);
void input(); //输入选手信息
void print_result(); //输出选手信息
};
player::player()
{ num=0;
name=NULL;
}
player::~player()
{delete []name;}
void player::input()
{ cout<<"编号:";
cin>>num;
cin.get();
cout<<"姓名:";
cin>>name;
}
void player::print_result()
{ cout<<"编号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
}
int player::m=3; //设裁判只有3个
int player::n=5; //设选手有5个
void main()
{ int i,n;
int num;char *name;
cout<<"请输入参赛选手人数:";cin>>n;
player *p;
p=new player[n];
cout<<"请输入参赛选手的基本信息:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].input();
}
cout<<"选手信息如下:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].print_result();
}
delete []p;
}
执行时总是只能输入第一个选手的信息,同时也无法输出选手信息。请你们帮我找一下错误,执行时出现的错误到底是由什么造成的?谢谢!
展开
 我来答
logiciel
2011-04-03 · TA获得超过140个赞
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:394万
展开全部
void player::input()
{ cout<<"编号:";
cin>>num;
cin.get();
name = new char[10];//加这行,否则name是空指针
cout<<"姓名:";
cin>>name;
}
追问
非常感谢你的回答!有个问题一直不是很懂,麻烦问一下,为name开辟空间时,用name=new char[x],其中x一般取多少呢?x的取值是依据一个汉字占两个字节吗?
追答
x的取值可以依据一个汉字占两个字节,但要注意留一个字节放结束符'\0'。总之取大一些较好。
梦笔生花_缘来
2011-04-03 · TA获得超过185个赞
知道答主
回答量:76
采纳率:0%
帮助的人:40.9万
展开全部
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class player
{
private:
int num;
char name[20];
static int n; //n表示参赛人数
static int m; //m表示裁判人数
public:
player(void);
~player(void);
void input(); //输入选手信息
void print_result(); //输出选手信息
};
player::player()
{ num=0;
//name[]={ };
}
player::~player()
{delete []name;}
void player::input()
{ cout<<"编号:";
cin>>num;
cin.get();
cout<<"姓名:";
cin>>name;
}
void player::print_result()
{ cout<<"编号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
}
//int player::m=3; //设裁判只有3个
//int player::n=5; //设选手有5个
void main()
{ int i,n;
int num;char *name;
cout<<"请输入参赛选手人数:";cin>>n;
player *p;
p=new player[n];
cout<<"请输入参赛选手的基本信息:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].input();
}
cout<<"选手信息如下:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].print_result();
}
//delete p ;
}

在我电脑上调试通过。
更多追问追答
追问
非常感谢你的回答,可是我打不开你的头文件#include"stdafx.h"!你能告诉我它的具体代码吗?
谢谢!
追答
自己新建一个工程Projects→选择Win32 ConsoleApplication →输入工程名,→A simple application   Finish  就自动 生产了#include"stdafx.h"!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
血天蓝海
2011-04-08 · 超过20用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include<string>
using namespace std;
class player
{
private:
int num;
char name[10];
static int n; //n表示参赛人数
static int m; //m表示裁判人数
public:
player(void);
~player(void);
void input(); //输入选手信息
void print_result(); //输出选手信息
};
player::player()
{ num=0;
name[10]=NULL;
}
player::~player()
{delete []name;}
void player::input()
{ cout<<"编号:";
cin>>num;
cout<<"姓名:";
cin>>name;
}
void player::print_result()
{ cout<<"编号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
}
int player::m=0; //设裁判只有3个
int player::n=0; //设选手有5个
int main()
{ int i,n;
cout<<"请输入参赛选手人数:";cin>>n;
player *p;
p=new player[n];
cout<<"请输入参赛选手的基本信息:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].input();
}
cout<<"选手信息如下:"<<endl;
for(i=0;i<n;i++)
{ cout<<"第"<<i+1<<"个选手:"<<endl;
p[i].print_result();
}
delete []p;
}
直接在类定义时就把name确定了...之后开辟多此一举...还要最后要delete辛苦不..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式