用C语言定义一个包含学生成绩(学号,姓名,成绩)的顺序表,读入相应的成绩信息来完成学生成绩表的创建。然后,(1)查找统计不及格的学生人数,(2)删除并以学号升序方式逐行输出不及格的学生信息。 【输入形式】 输入n+1行,其中第1行是学生人数,后n行是n本图书的信息(学号,姓名,成绩),每条信息占一行,学号、姓名、成绩使用空格分隔,成绩之后没有空格。 【输出形式】 输出数据有m+1行,其中第1行是不及格学生人数,后m行是不及格学生信息,每条信息占一行,学号、姓名、成绩使用空格分隔,成绩之后没有空格。 如果不存在不及格同学,则输出提示信息“not found”。
时间: 2023-04-07 18:03:29 浏览: 43
定义一个包含学生信息(学号,姓名,成绩)的顺序表
以下是 ChatGPT 的回答:
可以使用以下 C 语言代码来定义一个包含学生成绩的顺序表,并读入相应的成绩信息来完成学生成绩表的创建:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int id;
char name[20];
float score;
} Student;
typedef struct {
Student data[MAXSIZE];
int length;
} SeqList;
void CreateList(SeqList *L, int n) {
int i;
for (i = 0; i < n; i++) {
scanf("%d %s %f", &L->data[i].id, L->data[i].name, &L->data[i].score);
}
L->length = n;
}
int CountFail(SeqList L) {
int i, count = 0;
for (i = 0; i < L.length; i++) {
if (L.data[i].score < 60) {
count++;
}
}
return count;
}
void DeleteFail(SeqList *L) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i].score < 60) {
printf("%d %s %.1f\n", L->data[i].id, L->data[i].name, L->data[i].score);
for (j = i; j < L->length - 1; j++) {
L->data[j] = L->data[j + 1];
}
L->length--;
i--;
}
}
}
int main() {
SeqList L;
int n, count;
scanf("%d", &n);
CreateList(&L, n);
count = CountFail(L);
printf("%d\n", count);
if (count == 0) {
printf("not found\n");
} else {
DeleteFail(&L);
}
return 0;
}
```
如果不存在不及格同学,则输出提示信息“not found”。
注意:以上回答是 ChatGPT 的回答,不代表本人观点或立场。
阅读全文