为了不破坏原题结构,第九题单独列出来:
#include <iostream>
using namespace std;
const int SLEN = 30;
struct student{
char fullname[SLEN];
char hobby[SLEN];
int ooplevel;
};
int getinfo(student pa[], int n);
void display1(student st);
void display2(const student* ps);
void display3(const student pa[], int n);
int main()
{
cout << "Enter class size: ";
int class_size;
cin >> class_size;
while(cin.get() != '\n')
continue;
student* ptr_stu = new student[class_size];
int entered = getinfo(ptr_stu,class_size);
for(int i=0; i<class_size; ++i)
{
display1(ptr_stu[i]);
display2(&ptr_stu[i]);
}
display3(ptr_stu, entered);
delete [] ptr_stu;
cout << "Done\n";
return 0;
}
int getinfo(student pa[], int n)
{
int i=0;
for(; i<n; ++i)
{
cout << "Please input student name: ";
if(!(cin.getline(pa[i].fullname,SLEN)))
{
cin.clear();
while(cin.get() != '\n')
continue;
cout << "Bad input, input terminated." << endl;
}
cout << "Please input hobby of " << pa[i].fullname << " : ";
cin.getline(pa[i].hobby,SLEN);
cout << "Please input ooplevel of " << pa[i].fullname << " : ";
(cin >> pa[i].ooplevel).get();
}
return i;
}
void display1(student st)
{
cout << "student fullname is: " << st.fullname << endl;
cout << "student hobby is: " << st.hobby << endl;
cout << "student ooplevel is: " << st.ooplevel << endl;
}
void display2(const student* ps)
{
cout << "student fullname is: " << ps->fullname << endl;
cout << "student hobby is: " << ps->hobby << endl;
cout << "student ooplevel is: " << ps->ooplevel << endl;
}
void display3(const student pa[], int n)
{
cout << "There are " << n << "student in our school:" << endl;
for(int i=0; i<n; ++i)
{
cout << "student fullname is: " << pa[i].fullname << endl;
cout << "student hobby is: " << pa[i].hobby << endl;
cout << "student ooplevel is: " << pa[i].ooplevel << endl;
}
}