想用class构造函数啥的写写不出来....
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
/*
学生有(学号,姓名,性别,年龄)初始化三个学生的信息
(10,wes,f,23)(20,ert,f,45)(30,str,t,89)
然后对学生信息进行处理
例如:I12,rt,f,67表示插入12,rt,f,67
D10表示删除学号为10的学生的信息
每次操作完成之后输出所有学生的信息按照学号从大到小排序
输入:I12,rt,f,67
输出:
(30,str,t,89)
(20,ert,f,45)
(12,rt,f,67)
(10,wes,f,23)
输入:D10
输出:
(30,str,t,89)
(20,ert,f,45)
(12,rt,f,67)
*/
using namespace std;
struct Stu{
int id;
string name;
string gender;
int age;
};
cmp(Stu a, Stu b){
return a.id < b.id;
}
int main(){
Stu stu[30];
stu[0].id = 1; stu[0].name = "aa"; stu[0].gender = "f"; stu[0].age = 10;
stu[1].id = 2; stu[1].name = "BB"; stu[1].gender = "f"; stu[1].age = 11;
stu[2].id = 3; stu[2].name = "aD"; stu[2].gender = "m"; stu[2].age = 12;
int n = 3;
while(1){
char op[50];
gets(op);
if(op[0] == '0'){
break;
}
//添加一个学生
if(op[0] == 'I'){
int id, age;
char name[10], gender[2];
sscanf(op,"I%d,%[^,],%[^,],%d", &id, name, gender, &age);
stu[n].id = id;
stu[n].name = name;
stu[n].gender = gender;
stu[n].age = age;
n++;
}
//删除一个学生
if(op[0] == 'D'){
int idd;
sscanf(op,"D%d",&idd);
int i;
int flag = 0; //find student
for(i=0; i<n; i++){
if(stu[i].id == idd){
flag = 1;
break;
}
}
if(!flag)
cout << "没有找到学生";
else{
for(; i<n-2; i++){
stu[i].id = stu[i+1].id;
stu[i].name = stu[i+1].name;
stu[i].gender = stu[i+1].gender;
stu[i].age = stu[i+1].age;
}
n--;
}
}
sort(stu,stu+n,cmp);
int i;
for(i=0; i<n-1; i++){
cout << "(" << stu[i].id << "," << stu[i].name << "," << stu[i].gender << "," << stu[i].age << ")";
}
cout << "(" << stu[i].id << "," << stu[i].name << "," << stu[i].gender << "," << stu[i].age << ")" << endl;;
}
return 0;
}