C++程序设计 (第三版) 谭浩强 习题7.4
习题 7.4 在上题的基础上,编写一个函数input,用来输入5个学生的数据。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法:使用指针,结构体,自定义类型,函数的模块化设计,分配内存
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
const int N = 5;
typedef struct{
int num;
string name;
double score[3];
}Student;
void input(Student *stu, int n){
cout<<"Enter "<<n<<" Students Info:"<<endl;
for(int i = 0; i < n; i++){
cout<<"Enter No."<<i + 1<<" Student Number(100 ~ 999): ";
cin>>stu[i].num;
while(stu[i].num < 100 || stu[i].num > 999){
cout<<"Number Error! Retry!\nEnter No."<<i + 1<<" Student Number(100 ~ 999): ";
cin>>stu[i].num;
}
fflush(stdin);
cout<<"Enter No."<<i + 1<<" Student Name: ";
getline(cin, stu[i].name);
for(int j = 0; j < 3; j++){
cout<<"Enter No."<<i + 1<<" Student No."<<j + 1<<" Course Score(0 ~ 100): ";
cin>>stu[i].score[j];
while(stu[i].score[j] < 0 || stu[i].score[j] > 100){
cout<<"Score Error! Retry!\nEnter No."<<i + 1<<" Student No."<<j + 1<<" Course Score(0 ~ 100): ";
cin>>stu[i].score[j];
}
}
cout<<endl;
}
cout<<endl;
}
void print(Student *stu, int n){
cout<<"Student Info: "<<endl;
for(int i = 0; i < n; i++){
cout<<setiosflags(ios::right);
cout<<"Number: "<<setw(3)<<stu[i].num<<" Name: "<<setw(10)<<stu[i].name<<" Score: ";
for(int j = 0; j < 3; j++){
cout<<setiosflags(ios::fixed)<<setprecision(2);
cout<<setw(5)<<stu[i].score[j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
int main(){
Student *stu = new Student[N];
input(stu, N);
print(stu, N);
delete[] stu;
system("pause");
return 0;
}