#include<stdio.h> #include<string.h> typedef struct nodelink { long num; char name[20]; int Chinese; int Math; int English; float aver; }stu; int main() { stu b[10]; FILE *pf; pf=fopen("stud.txt","a"); stu a[10]; for(int i=0;i<3;i++) { printf("请输入第%d个学生的学号,姓名,语文成绩,数学成绩,英语成绩:\n", i + 1); scanf("%ld", &a[i].num); getchar(); fgets(a[i].name, 20, stdin); a[i].name[strlen(a[i].name) - 1] = '\0'; scanf("%d%d%d", &a[i].Chinese, &a[i].Math, &a[i].English); a[i].aver=(a[i].Chinese+a[i].Math+a[i].English)/3.0; fprintf(pf,"%ld\t%s\t%d\t%d\t%d\t%.1f\n",a[i].num,a[i].name,a[i].Chinese,a[i].Math,a[i].English,a[i].aver); } for(int i=0;i<3;i++) { fscanf(pf,"%ld\t%s\t%d\t%d\t%d\t%.1f\n",&b[i].num,b[i].name,&b[i].Chinese,&b[i].Math,&b[i].English,&b[i].aver); printf("%ld\t%s\t%d\t%d\t%d\t%.1f\n",b[i].num,b[i].name,b[i].Chinese,b[i].Math,b[i].English,b[i].aver); } fclose(pf); FILE *pf1; pf1=fopen("studsort.txt","a"); stu k; for(int i=0;i<3;i++) for(int j=i;j<3;j++) { if(b[i].aver>b[j].aver) { b[i]=k; b[i]=b[j]; b[j]=k; } } for(int i=0;i<3;i++) { fprintf(pf1,"%ld\t%s\t%d\t%d\t%d\t%.1f\n",b[i].num,b[i].name,b[i].Chinese,b[i].Math,b[i].English,b[i].aver); } fclose(pf1); return 0; }
时间: 2023-12-03 09:46:37 浏览: 26
这段代码实现了学生信息的录入和排序,并将结果输出到文件中。具体来说,代码首先定义了一个结构体 `stu`,用于存储每个学生的学号、姓名、语文、数学、英语成绩以及平均分。然后,代码利用 `for` 循环和 `scanf`、`fgets` 函数分别从键盘读入每个学生的信息,并计算平均分。接着,代码利用 `fprintf` 函数将每个学生的信息写入文件 "stud.txt" 中。
然后,代码利用 `fscanf` 函数从 "stud.txt" 中读取每个学生的信息,并将其存储在数组 `b` 中。最后,代码利用冒泡排序将学生信息按照平均分从小到大排序,并将排序结果写入文件 "studsort.txt" 中。
需要注意的是,代码中存在一个错误。在冒泡排序中,代码并没有正确地交换 `b[i]` 和 `b[j]`,而是交换了 `b[i]` 和一个未初始化的结构体变量 `k`。因此,代码需要修改如下:
```c
for(int i = 0; i < 3; i++) {
for(int j = i + 1; j < 3; j++) {
if(b[i].aver > b[j].aver) {
stu temp = b[i]; // 使用临时变量 temp 存储 b[i]
b[i] = b[j];
b[j] = temp;
}
}
}
```
这样,代码就可以正确地交换 `b[i]` 和 `b[j]` 了。
相关问题
#include<stdio.h>#include<stdlib.h>#include<string.h>
在C语言中,`#include<stdio.h>`、`#include<stdlib.h>`和`#include<string.h>`分别包含了输入/输出、内存管理以及字符串处理相关的库。这里给你演示如何使用这些头文件中的函数:
1. **输入/输出(stdio.h)**:
```c
#include<stdio.h>
int main() {
printf("Hello, World!\n"); // 使用printf输出字符串
scanf("%s", "Enter your name: "); // 使用scanf从用户那里读取输入
return 0;
}
```
2. **内存管理(stdlib.h)**:
```c
#include<stdlib.h>
int *createArray(int size) {
int *array = malloc(size * sizeof(int)); // 分配动态内存
return array;
}
void freeMemory(int *array, int size) {
free(array); // 释放已分配的内存
}
```
3. **字符串处理(string.h)**:
```c
#include<string.h>
char* copyString(const char* src) {
char* dest = (char*)malloc(strlen(src) + 1); // 动态分配内存复制字符串
strcpy(dest, src);
return dest;
}
```
注意,C语言的标准库函数可能需要链接到适当的库,如`-lstdc++` 或 `-lm`,具体取决于编译器设置。
#include <stdio.h> #include <malloc.h> typedef char ElemType; typedef struct LNode
#include <stdio.h> 和 #include <malloc.h> 是 C 语言中的头文件,前者用于输入输出,后者用于内存动态分配和释放。
typedef char ElemType; 定义了一个名为 ElemType 的数据类型,实际上是 char 类型。
typedef struct LNode 定义了一个名为 LNode 的结构体类型。
该结构体类型中可以包含多个成员变量,具体定义方式如下:
typedef struct LNode {
int data;
struct LNode* next;
} LNode;
这里定义了一个 LNode 结构体类型,其中包含两个成员变量:data 和 next。data 是一个整型变量,next 是一个指向 LNode 类型的指针变量。这种结构体类型通常用于链表的实现。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![image/gif](https://img-home.csdnimg.cn/images/20210720083352.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)