请编写程序,定义用于存储学生信息的结构体数组,输入学生的准考证号、姓名和各科成绩信息,利用void deleteinfo(stuStru *s,int &n,char id[]) 函数,实现学生信息删除功能,即根据准考证号来删除满足条件的学生信息。
时间: 2024-01-22 14:17:48 浏览: 57
以下是程序的实现:
```c++
#include <iostream>
#include <string.h>
using namespace std;
struct stuStru {
char id[20];
char name[20];
float score1;
float score2;
float score3;
};
void deleteinfo(stuStru *s, int &n, char id[]) {
int i, j;
bool flag = false;
for (i = 0; i < n; i++) {
if (strcmp(s[i].id, id) == 0) {
flag = true;
for (j = i; j < n - 1; j++) {
s[j] = s[j + 1];
}
n--;
i--;
}
}
if (flag) {
cout << "删除成功!" << endl;
} else {
cout << "没有找到匹配的学生信息!" << endl;
}
}
int main() {
int n = 0;
stuStru s[100];
// 输入学生信息
for (int i = 0; i < 3; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "准考证号:";
cin >> s[i].id;
cout << "姓名:";
cin >> s[i].name;
cout << "第一科成绩:";
cin >> s[i].score1;
cout << "第二科成绩:";
cin >> s[i].score2;
cout << "第三科成绩:";
cin >> s[i].score3;
n++;
}
// 删除学生信息
char id[20];
cout << "请输入要删除的学生准考证号:";
cin >> id;
deleteinfo(s, n, id);
// 输出剩余学生信息
cout << "剩余学生信息:" << endl;
for (int i = 0; i < n; i++) {
cout << "准考证号:" << s[i].id << endl;
cout << "姓名:" << s[i].name << endl;
cout << "第一科成绩:" << s[i].score1 << endl;
cout << "第二科成绩:" << s[i].score2 << endl;
cout << "第三科成绩:" << s[i].score3 << endl;
}
return 0;
}
```
程序运行示例:
```
请输入第1个学生的信息:
准考证号:10001
姓名:张三
第一科成绩:80
第二科成绩:85
第三科成绩:90
请输入第2个学生的信息:
准考证号:10002
姓名:李四
第一科成绩:75
第二科成绩:82
第三科成绩:88
请输入第3个学生的信息:
准考证号:10003
姓名:王五
第一科成绩:90
第二科成绩:92
第三科成绩:95
请输入要删除的学生准考证号:10002
删除成功!
剩余学生信息:
准考证号:10001
姓名:张三
第一科成绩:80
第二科成绩:85
第三科成绩:90
准考证号:10003
姓名:王五
第一科成绩:90
第二科成绩:92
第三科成绩:95
```
阅读全文