
请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;
}
执行时总是只能输入第一个选手的信息,同时也无法输出选手信息。请你们帮我找一下错误,执行时出现的错误到底是由什么造成的?谢谢! 展开
#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;
}
执行时总是只能输入第一个选手的信息,同时也无法输出选手信息。请你们帮我找一下错误,执行时出现的错误到底是由什么造成的?谢谢! 展开
3个回答
展开全部
void player::input()
{ cout<<"编号:";
cin>>num;
cin.get();
name = new char[10];//加这行,否则name是空指针
cout<<"姓名:";
cin>>name;
}
{ cout<<"编号:";
cin>>num;
cin.get();
name = new char[10];//加这行,否则name是空指针
cout<<"姓名:";
cin>>name;
}
追问
非常感谢你的回答!有个问题一直不是很懂,麻烦问一下,为name开辟空间时,用name=new char[x],其中x一般取多少呢?x的取值是依据一个汉字占两个字节吗?
追答
x的取值可以依据一个汉字占两个字节,但要注意留一个字节放结束符'\0'。总之取大一些较好。
展开全部
#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<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"!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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辛苦不..
#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辛苦不..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询