#include <stdio.h> #define MAX 100 // 最大学生数量 struct Student { char czName[20]; // 学生姓名 char czNumber[20]; // 学生学号 char guli[8]; }; int main() { FILE* fp = fopen("students.txt", "r+"); if (fp == NULL) { printf("Failed to open file!\n"); exit(0); } struct Student Student[MAX]; // 定义结构体数组 int i=0; int nCount=0; while (fscanf(fp,"%s %s %s", Student[i].czName,Student[i].czNumber,Student[i].guli) ==3) { nCount++; // i++; } fclose(fp); // 打印学生信息 for (i = 0; i < nCount; i++) { printf("%s %s %s\n", Student[i].czName, Student[i].czNumber, Student[i].guli); }下一步如何进行冒泡排序
时间: 2024-03-02 10:51:18 浏览: 70
可以按照以下步骤进行冒泡排序:
1. 定义一个结构体变量temp,用于交换结构体数组中两个元素的值。
2. 使用两个for循环进行冒泡排序。外层循环控制比较次数,内层循环控制每次比较的元素。
3. 在内层循环中,使用if语句比较相邻两个元素的大小,如果前一个元素比后一个元素大,则交换两个元素的值。
4. 最终得到的结构体数组就是排好序的。
下面是代码实现:
```
// 冒泡排序
for (int i = 0; i < nCount - 1; i++) {
for (int j = 0; j < nCount - i - 1; j++) {
if (strcmp(Student[j].czNumber, Student[j+1].czNumber) > 0) {
// 交换两个元素的值
struct Student temp = Student[j];
Student[j] = Student[j+1];
Student[j+1] = temp;
}
}
}
// 打印排序后的学生信息
printf("排序后的学生信息:\n");
for (i = 0; i < nCount; i++) {
printf("%s %s %s\n", Student[i].czName, Student[i].czNumber, Student[i].guli);
}
```
相关问题
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 100 // 学生信息结构体 typedef struct { char num[10]; // 学号 char name[10]; // 姓名 char clas[10]; // 班级 char sex[10]; // 性别 float score; // 成绩 } Student; // 学生信息数组 Student studentList[MAX_SIZE]; int size = 0; 帮我添加一个可以查询学生成绩最大值和最小值的分函数代码
可以添加以下代码来实现查询学生成绩最大值和最小值的函数:
```c
// 查询学生成绩最大值和最小值
void findMinMaxScore() {
float maxScore = 0, minScore = 100;
for (int i = 0; i < size; i++) {
if (studentList[i].score > maxScore) {
maxScore = studentList[i].score;
}
if (studentList[i].score < minScore) {
minScore = studentList[i].score;
}
}
printf("成绩最高的学生信息:\n");
for (int i = 0; i < size; i++) {
if (studentList[i].score == maxScore) {
printf("学号:%s 姓名:%s 班级:%s 性别:%s 成绩:%.2f\n",
studentList[i].num, studentList[i].name,
studentList[i].clas, studentList[i].sex,
studentList[i].score);
}
}
printf("成绩最低的学生信息:\n");
for (int i = 0; i < size; i++) {
if (studentList[i].score == minScore) {
printf("学号:%s 姓名:%s 班级:%s 性别:%s 成绩:%.2f\n",
studentList[i].num, studentList[i].name,
studentList[i].clas, studentList[i].sex,
studentList[i].score);
}
}
}
```
在主函数中,可以通过调用该函数来查询学生成绩最大值和最小值:
```c
int main() {
// 添加学生信息
// ...
// 查询学生成绩最大值和最小值
findMinMaxScore();
return 0;
}
```
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 100 // 最多支持100个学生 struct date{ int year; int month; int day; }; typedef struct { int num; // 学号 char name[20]; // 姓名 char sex[5]; // 性别 struct date birthday; // 出生日期 int score[3]; // 三门功课成绩 int total; // 总分 double average; // 平均分 } student; student students[MAX_STUDENTS]; // 学生数组 int num_students = 0; // 学生数量
这段代码定义了一个名为student的结构体,其中包含了学生的学号、姓名、性别、出生日期、三门功课成绩、总分和平均分等信息。同时还定义了一个名为date的结构体,用来表示学生的出生日期。
另外还定义了一个名为students的数组来存储学生信息,数组的长度为MAX_STUDENTS,即最多支持100个学生。还定义了一个变量num_students用来记录当前学生数量。
这段代码的作用是定义了一些数据结构和变量,用来存储和处理学生信息。具体的操作需要在其他代码中实现。
阅读全文