求下面两题C++的改错题答案,急。。。。。。。。

1.以下程序实现了一个“圆”类,其数据成员为指向半径值的指针。#include<iostream.h>#definePI3.14classcircle{public:ci... 1.以下程序实现了一个“圆”类,其数据成员为指向半径值的指针。
#include <iostream.h>
#define PI 3.14
class circle
{public:circle(double a);
double area() //求圆的面积
{return PI*p*p;} //*****出错******
private:double *p; } //*****出错******
circle::circle(double a)
{*p=new double; //*****出错******
*p=a;}
void main()
{double r;
do{cin>>r;
}while(r>0); //*****出错******
circle C(r);
cout<<”area=”<<C.area()<<endl;
}
2.以下程序定义了一个学生信息类,用于实现简单的学生成绩管理。其中,假定学生所修科目的学分数均为2分。
#include <iostream.h>
#include <string.h>
class student
{private:char name[10]; //学生姓名
int n; //学生所修科目数
float score[100]; //学生成绩(最多为99科,第一个元素存放学分)
public:static int number; //到目前为止最后一个学生的学号,静态数据成员
int id; //学生学号
student(char sn[]); //构造函数要求录入学生姓名,学号自动增加
void inputscore(float a); //输入成绩并同时对学分进行更新
float getcredit(){return score[0];} //返回学分总数
};
number=0; //*****出错******
student::student(char *sn)
{id=++number; //为姓名、学号、科目数、学分等赋初值
name=sn; //*****出错******
n=0;score[0]=0;
}
void inputscore(float a) //*****出错******
{score[n++]=a; //*****出错******
if(a>=60) //更新学分,成绩>=60方可获得学分
score[0]+=2;
}
void main()
{student *p[1000]; //设共有1000个学生
char name[10],flag;
float score; int t;
for(int i=0;i<1000;i++)
{cin>>name;
p[i]=new student{name}; //*****出错******
}
while(1)
{ cin>>t>>score; //从键盘输入学号为t的学生的一科成绩
p[t-1]->inputscore(score);
cout<<”继续输入请按Y,否则退出”<<endl;
cin>>flag;
if(!(flag==’y’||flag==’Y’)) break;
}
while(1)
{ cout<<”请输入您要查看的学生号码”<<endl;
cin>>t;
cout<<”该生学分为:”<<p[t]->getcredit()<<endl; //*****出错******
cout<<”继续查看请按Y,否则退出”<<endl;
cin>>flag;
if(!(flag==’y’||flag==’Y’)) break;
}
}
展开
 我来答
应用之美
推荐于2016-06-02 · TA获得超过2513个赞
知道小有建树答主
回答量:453
采纳率:0%
帮助的人:380万
展开全部
#include <iostream.h>
#define PI 3.14
class circle
{
public:
circle(double a);

double area() //求圆的面积
{
//return PI*p*p;//*****出错******
return PI * (*p) * (*p);
}

private:
double *p;
//} //*****出错******
};

circle::circle(double a)
{
//*p=new double; //*****出错******
p = new double;
*p=a;
}
void main()
{
double r;
do{
cin>>r;
// }while(r>0); //*****出错******
}while(r > 0.0);

circle C(r);
cout<<”area=”<<C.area()<<endl;
}

======================================

#include <iostream.h>
#include <string.h>
class student
{
private
:char name[10]; //学生姓名
int n; //学生所修科目数
float score[100]; //学生成绩(最多为99科,第一个元素存放学分)

public:
static int number; //到目前为止最后一个学生的学号,静态数据成员
int id; //学生学号
student(char sn[]); //构造函数要求录入学生姓名,学号自动增加
void inputscore(float a); //输入成绩并同时对学分进行更新
float getcredit(){return score[0];} //返回学分总数
};

//number=0; //*****出错******
static int student::number = 0;
student::student(char *sn)
{
id=++number; //为姓名、学号、科目数、学分等赋初值
//name=sn; //*****出错******
strncpy(name, sn, 9);
n=0;
score[0]=0;
}
//void inputscore(float a) //*****出错******
void student::inputscore(float a)
{
score[n++]=a; //*****出错******
if(a>=60) //更新学分,成绩>=60方可获得学分
score[0]+=2;
}
void main()
{
student *p[1000]; //设共有1000个学生
char name[10],flag;
float score; int t;
for(int i=0;i<1000;i++)
{
cin>>name;
//p[i]=new student{name}; //*****出错******
p[i]=new student(name);
}

while(1)
{
cin>>t>>score; //从键盘输入学号为t的学生的一科成绩
p[t-1]->inputscore(score);
cout<<”继续输入请按Y,否则退出”<<endl;
cin>>flag;
if(!(flag==’y’||flag==’Y’)) break;
}

while(1)
{
cout<<”请输入您要查看的学生号码”<<endl;
cin>>t;
//cout<<”该生学分为:”<<(p[t]->getcredit()<<endl; //*****出错******
cout<<”该生学分为:”<<p[t-1]->getcredit()<<endl;
cout<<”继续查看请按Y,否则退出”<<endl;
cin>>flag;
if(!(flag==’y’||flag==’Y’)) break;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanarri
2008-06-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8120万
展开全部
#include <iostream.h>
#define PI 3.14
class circle
{public:circle(double a);
double area() //求圆的面积
{return PI*(*p)*(*p);}
private:double *p;
circle::circle(double a)
{p=new double;
*p=a;}
void main()
{double r;
do{cin>>r;
}while(r<0);
circle C(r);
cout<<"area="<<C.area()<<endl;
}
2.以下程序定义了一个学生信息类,用于实现简单的学生成绩管理。其中,假定学生所修科目的学分数均为2分。
#include <iostream.h>
#include <string.h>
class student
{private:char name[10]; //学生姓名
int n; //学生所修科目数
float score[100]; //学生成绩(最多为99科,第一个元素存放学分)
public:static int number; //到目前为止最后一个学生的学号,静态数据成员
int id; //学生学号
student(char sn[]); //构造函数要求录入学生姓名,学号自动增加
void inputscore(float a); //输入成绩并同时对学分进行更新
float getcredit(){return score[0];} //返回学分总数
};
number=0;
student::student(char *sn)
{id=++number; //为姓名、学号、科目数、学分等赋初值
strcpy(name,sn);
n=0;score[0]=0;
}
void student::inputscore(float a)
{score[++n]=a;
if(a>=60) //更新学分,成绩>=60方可获得学分
score[0]+=2;
}
void main()
{student *p[1000]; //设共有1000个学生
char name[10],flag;
float score; int t;
for(int i=0;i<1000;i++)
{cin>>name;
p[i]=new student(name);
}
while(1)
{ cin>>t>>score; //从键盘输入学号为t的学生的一科成绩
p[t-1]->inputscore(score);
cout<<"继续输入请按Y,否则退出"<<endl;
cin>>flag;
if(!(flag=='y'||flag=='Y')) break;
}
while(1)
{ cout<<"请输入您要查看的学生号码"<<endl;
cin>>t;
cout<<"该生学分为:"<<p[t-1]->getcredit()<<endl;
cout<<"继续查看请按Y,否则退出"<<endl;
cin>>flag;
if(!(flag=='y'||flag=='Y')) break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百态森林
2008-06-19
知道答主
回答量:35
采纳率:0%
帮助的人:3万
展开全部
number=0; //*****出错******
应改成int student::number=0;
p[i]=new student{name}; //*****出错******
应改成p[i]=new student(name);
void inputscore(float a) //*****出错******
应改成void student::inputscore(float a);
还有将所有的’‘的这些中文的符号改成英文的。
这代码有个BUG入个在当学号为0时就会出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式