用c语言分别写出下面题目在:1.编写程序,完成如下功能:提示用户输入文件名,使用该文件名创建文件,并将其 存入D盘。 2.从键盘输入一串字符,存入文件,直到用户输入一个“!”作为终止标志。 3.文件“stu_info1.txt”包含学生的基本信息(姓名、学号、籍贯三项),现在需 要从该文件中读出信息,并依次为每位学生输入三门课程成绩,计算平均成绩,再将学生 完整信息(姓名、学号、籍贯、课程 1、课程 2、课程 3、平均分)写入文件 “stu_info2.txt”并保存于磁盘上。 4.将文件 stu_info2.txt 中学生信息读出,按照平均分排序处理,再重新写入文件 “stu_sort.txt”并保存于磁盘上。
时间: 2023-12-06 09:42:39 浏览: 71
1. 创建文件并存入D盘
```c
#include <stdio.h>
int main() {
char filename[100];
printf("请输入文件名:");
scanf("%s", filename);
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("文件创建失败!");
return -1;
}
fprintf(fp, "这是一个测试文件。\n");
fclose(fp);
printf("文件已保存至D盘。");
return 0;
}
```
2. 从键盘输入字符,并存入文件
```c
#include <stdio.h>
int main() {
char filename[100], ch;
printf("请输入文件名:");
scanf("%s", filename);
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("文件创建失败!");
return -1;
}
printf("请输入一串字符,以“!”结束:\n");
while ((ch = getchar()) != '!') {
fputc(ch, fp);
}
fclose(fp);
printf("文件已保存至D盘。");
return 0;
}
```
3. 从文件读取学生信息,并计算平均成绩,写入新文件
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char name[20];
char id[10];
char native_place[20];
float score1;
float score2;
float score3;
float average;
};
int main() {
FILE *fp1, *fp2;
fp1 = fopen("stu_info1.txt", "r");
fp2 = fopen("stu_info2.txt", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("文件打开失败!");
return -1;
}
struct Student stu;
while (fscanf(fp1, "%s %s %s", stu.name, stu.id, stu.native_place) != EOF) {
printf("请输入 %s 的三门课程成绩:", stu.name);
scanf("%f %f %f", &stu.score1, &stu.score2, &stu.score3);
stu.average = (stu.score1 + stu.score2 + stu.score3) / 3;
fprintf(fp2, "%s %s %s %.1f %.1f %.1f %.1f\n", stu.name, stu.id, stu.native_place, stu.score1, stu.score2, stu.score3, stu.average);
}
fclose(fp1);
fclose(fp2);
printf("文件已保存至D盘。");
return 0;
}
```
4. 按平均分排序并重新写入文件
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
char name[20];
char id[10];
char native_place[20];
float score1;
float score2;
float score3;
float average;
};
int cmp(const void *a, const void *b) {
return ((struct Student*)b)->average - ((struct Student*)a)->average > 0 ? 1 : -1;
}
int main() {
FILE *fp1, *fp2;
fp1 = fopen("stu_info2.txt", "r");
fp2 = fopen("stu_sort.txt", "w");
if (fp1 == NULL || fp2 == NULL) {
printf("文件打开失败!");
return -1;
}
struct Student stu[100];
int count = 0;
while (fscanf(fp1, "%s %s %s %f %f %f %f", stu[count].name, stu[count].id, stu[count].native_place, &stu[count].score1, &stu[count].score2, &stu[count].score3, &stu[count].average) != EOF) {
count++;
}
qsort(stu, count, sizeof(struct Student), cmp);
for (int i = 0; i < count; i++) {
fprintf(fp2, "%s %s %s %.1f %.1f %.1f %.1f\n", stu[i].name, stu[i].id, stu[i].native_place, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].average);
}
fclose(fp1);
fclose(fp2);
printf("文件已保存至D盘。");
return 0;
}
```
阅读全文