建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。

运行时出错,不是很理解这个程序到底怎么写#include<iostream>usingnamespacestd;classStudent{public:voidget_s... 运行时出错,不是很理解这个程序到底怎么写

#include <iostream>
using namespace std;
class Student
{
public:
void get_student();
void display();
private:
int num;
int score;
};
void Student::get_student()
{
cin>>num>>score;
}
void Student::display()
{
cout<<"num="<<num<<"\t"<<"score="<<score<<endl;
}
int main()
{
int i;
Student *p;
p=new Student[];
for(i=0;i<5;i++)
{
cout<<"请输入第"<<i+1<<"名学号和成绩:";
p->get_student();
}
cout<<"输出第1.3.5个学生的数据:\n";
for(i=0;i<5;i=i+2)
{
p->display();
}
delete p;
return 0;
}
展开
 我来答
问明6E
高粉答主

2019-10-10 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.3万
展开全部

#include <iostream>

using namespace std;

class Student

{

public:

Student(int n=0, float s=0): num(n), score(s){}

void input();

void display();

private:

int num;

float score;

};

void Student::input()

{

cin>>num>>score;

}

void Student::display()

{

cout<<num<<' '<<score<<endl;

}

int main()

{

Student stu[5], *p;

int i;

for (i=0; i<5; i++){

cout<<"Pleas enter No."<<i+1<<" student info: ";

stu[i].input();

}

for (p=stu; p<stu+5; p+=2){

p->display();

cout<<endl;

}

system("pause");

return 0;

}



扩展资料:

cout语句的一般格式为:

cout<<表达式1<<表达式2<<……<<表达式n;

在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行cout语句时,先把插入的数据顺序存放在输出缓冲区中,

直到输出缓冲区满或遇到cout语句中的endl(或'\n',ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备(一般为显示器)输出。 

一个cout语句可以分写成若干行。如:

cout<<"This is a simple C++ program."<<endl;

可以写成

cout<<"This is " //注意行末尾无分号

<<"a C++ "

<<"program."

<<endl; //语句最后有分号

也可写成多个cout语句,即

cout<<"This is "; //语句末尾有分号

cout <<"a C++ ";

cout <<"program.";

cout<<endl;

以上3种情况的输出均为:

This is a simple C++ program.

zhou734816240
推荐于2017-09-22 · TA获得超过190个赞
知道答主
回答量:117
采纳率:0%
帮助的人:55.3万
展开全部
#include <iostream>
using namespace std;
class Student{
public:void get_student();
void display();
private:int num;int score;
};
void Student::get_student(){
cin>>num>>score;
}
void Student::display()
{cout<<"num="<<num<<"\t"<<"score="<<score<<endl;}

int main(){int i;Student *p;p=new Student[];Student *t = p;

for(i=0;i<5;i++){
cout<<"请输入第"<<i+1<<"名学号和成绩:";p->get_student();
p++;

}cout<<"输出第1.3.5个学生的数据:\n";
p=t;
for(i=0;i<5;i=i+2)
{
p->display();
p++;
p++;
}delete p; delete t;return 0;}

已完善,可以实现,问题是你每次都是在同一处指针处创建,需要新建一个指针保存初始位置,然后需要移动指针,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
纯朴且纯良丶光芒
2020-04-08
知道答主
回答量:1
采纳率:0%
帮助的人:610
展开全部
#include <iostream>
using namespace std;
class Student
{public:
Student(int a,float b)
{
num=a;
score=b;
}
void display();
private:
int num;
float score;
};
void Student::display()
{cout<<num<<" "<<score<<endl;}
int main()
{
Student stud[5]={
Student(101,78.5),Student(102,85.5),Student(103,98.5),
Student(104,100.0),Student(105,95.5)};
Student *p=stud;
for(int i=0;i<5;i=i+2,p+=2)
p->display();
return 0;
}
只是提供思路而已,不是直接回答本题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DerekOK
2018-09-26
知道答主
回答量:3
采纳率:0%
帮助的人:1909
展开全部
将p=new Student[];这一行代码更改为p=new Student[i];即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随便asdq
2012-11-26 · 超过18用户采纳过TA的回答
知道答主
回答量:33
采纳率:100%
帮助的人:18.7万
展开全部
#include <iostream>
using namespace std;

class Student
{
public:
void get_student();
void display();
private:
int num;
int score;
};
void Student::get_student()
{
cin>>num>>score;
}
void Student::display()
{
cout<<"num="<<num<<"\t"<<"score="<<score<<endl;
}
int main()
{
int i;
Student *p;
p = new Student[5]; //这里创5个student

for(i=0;i<5;i++)
{
cout<<"请输入第"<<i+1<<"名学号和成绩:";
p[i].get_student();//这里指定p所指向的第几个student 的值
}
cout<<"输出第1.3.5个学生的数据:\n";
for(i=0;i<5;i=i+2)
{
p[i].display();//同理指定所对应的第几个student

}
delete p;
return 0;
}

你原来那个p创建的时候没有指定个数,然后p始终指向创建的第一个student,所以把那个改了以后还是会有错,所以要用下标,我也只是初学,所以不是很懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式