建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。
#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;
} 展开
#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.
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;}
已完善,可以实现,问题是你每次都是在同一处指针处创建,需要新建一个指针保存初始位置,然后需要移动指针,
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;
}
只是提供思路而已,不是直接回答本题。
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,所以把那个改了以后还是会有错,所以要用下标,我也只是初学,所以不是很懂