完善下面代码#include <stdio.h> #include <string.h> //定义学生结构体(包含学号、姓名、性别、年龄和电话) struct Student { int number; char name[20]; char gender[5]; int age; char phone[15]; }; int main() { //定义存放多个学生信息的数组 struct Student students[100]; int num = 0; //用于记录学生个数 printf("请输入学生信息:\n"); //循环输入多个学生信息,直到输入“0”为止 while (1) { printf("请输入第%d个学生的学号(输入0结束):", num + 1); scanf("%d", &students[num].number); if (students[num].number == 0) { break; //输入"0"表示结束输入 } printf("请输入第%d个学生的姓名:", num + 1); scanf("%s", students[num].name); printf("请输入第%d个学生的性别:", num + 1); scanf("%s", students[num].gender); printf("请输入第%d个学生的年龄:", num + 1); scanf("%d", &students[num].age); printf("请输入第%d个学生的电话号码:", num + 1); scanf("%s", students[num].phone); num++; //更新学生个数 } //按照序号顺序排列学生信息(选择排序) for (int i = 0; i < num - 1; i++) { int min_index = i; for (int j = i + 1; j < num; j++) { if (students[j].number < students[min_index].number) { min_index = j; } } if (min_index != i) { struct Student temp = students[min_index]; students[min_index] = students[i]; students[i] = temp; } } //输出所有学生信息 printf("\n\n所有的学生信息:\n"); for (int i = 0; i < num; i++) {
时间: 2024-04-28 10:22:58 浏览: 68
学生成绩管理程序-结构体数组法.rar
4星 · 用户满意度95%
printf("学号:%d,姓名:%s,性别:%s,年龄:%d,电话:%s\n", students[i].number, students[i].name, students[i].gender, students[i].age, students[i].phone); } return 0; }
在输入学生的姓名和性别时,可以使用fgets()函数代替scanf()函数,以避免输入出错的情况。例如,使用fgets()函数的代码如下:
fgets(students[num].name, 20, stdin); //最多读取20个字符,包括换行符
students[num].name[strcspn(students[num].name, "\n")] = '\0'; //将读取的换行符替换为\0
fgets(students[num].gender, 5, stdin);
students[num].gender[strcspn(students[num].gender, "\n")] = '\0';
阅读全文