编写一个程序,建立一个名称为stud_in.txt的文本文件,向其中格式化写入一组姓名和成绩,然后再把该文件复制到另外一个文件stud_out.txt文件中。
时间: 2023-04-27 17:02:02 浏览: 193
可以使用以下代码实现:
```python
# 打开文件stud_in.txt并写入数据
with open('stud_in.txt', 'w') as f:
f.write('张三 80\n')
f.write('李四 90\n')
f.write('王五 85\n')
# 复制文件stud_in.txt到stud_out.txt
with open('stud_in.txt', 'r') as f_in, open('stud_out.txt', 'w') as f_out:
for line in f_in:
f_out.write(line)
```
以上代码首先打开文件`stud_in.txt`并写入数据,然后再打开该文件并读取数据,逐行写入到文件`stud_out.txt`中,从而实现文件的复制。
相关问题
1新建一个文本文件stud.txt,在里面按行输入至少三个学生的信息(含学号、姓名
成绩等信息)。
首先,我们可以通过在计算机上创建一个新的文本文件来开始这个任务。可以在桌面上点击右键,然后选择“新建”并选择“文本文档”创建一个名为“stud.txt”的文件。
接下来,我们需要按行输入至少三个学生的信息。例如,我们可以按照以下格式输入学生信息:
学号 姓名 成绩
001 张三 90
002 李四 85
003 王五 95
在每行中,学号、姓名和成绩之间使用空格分隔。每个学生的信息占据一行。
在输入完三个学生的信息之后,我们可以保存并关闭文本文件。
请注意,这只是给出了一个示例,您可以根据实际情况输入更多学生的信息。确保每个学生的信息都以学号、姓名和成绩的顺序按行输入,并且每个字段都使用空格进行分隔。
这样,我们就成功地在stud.txt文件中输入了至少三个学生的信息。
1.有5个学生,每个学生有学号、姓名、数学成绩、语文成绩、英语成绩。从键盘输入以上数据,计算出每位同学三门功课的平均成绩,将原有数据和计算出的平均分数以下图的格式放在成绩原始文件stud.txt中。 2. 将上题stud.txt文件中的学生数据按平均分进行降序排序处理,将已排序的学生数据存入一个新文件学生成绩文件stu_sort.txt中。 3. 对上题已排序的学生成绩文件stu_sort.txt进行插入处理。插入一个学生的相关数据。程序先计算新插入学生的平均成绩,然后将它按成绩从高到低顺序插入学生成绩文件stu_sort.txt中(要求更新原有文件)。
以下是使用 C 语言实现上述三个问题的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int id;
char name[20];
float math;
float chinese;
float english;
float average;
} Student;
void print_student(Student s);
void print_students(Student *students, int count);
void write_students(Student *students, int count, char *filename);
void read_students(Student *students, int count, char *filename);
void sort_students(Student *students, int count);
void insert_student(Student *students, int *count, Student new_student);
int main()
{
int count = 5;
Student students[5];
char filename[] = "stud.txt";
char sort_filename[] = "stu_sort.txt";
// 从键盘输入学生信息
printf("请输入5个学生的信息:\n");
for (int i = 0; i < count; i++) {
printf("请输入第%d个学生的学号、姓名、数学成绩、语文成绩、英语成绩:\n", i + 1);
scanf("%d%s%f%f%f", &students[i].id, students[i].name, &students[i].math, &students[i].chinese, &students[i].english);
students[i].average = (students[i].math + students[i].chinese + students[i].english) / 3;
}
// 将学生信息写入文件
write_students(students, count, filename);
// 从文件中读取学生信息并排序
read_students(students, count, filename);
sort_students(students, count);
// 将排序后的学生信息写入文件
write_students(students, count, sort_filename);
// 插入新学生并更新文件
Student new_student;
printf("请输入新学生的学号、姓名、数学成绩、语文成绩、英语成绩:\n");
scanf("%d%s%f%f%f", &new_student.id, new_student.name, &new_student.math, &new_student.chinese, &new_student.english);
new_student.average = (new_student.math + new_student.chinese + new_student.english) / 3;
insert_student(students, &count, new_student);
write_students(students, count, sort_filename);
return 0;
}
void print_student(Student s)
{
printf("%-10d%-10s%-10.2f%-10.2f%-10.2f%-10.2f\n", s.id, s.name, s.math, s.chinese, s.english, s.average);
}
void print_students(Student *students, int count)
{
printf("%-10s%-10s%-10s%-10s%-10s%-10s\n", "学号", "姓名", "数学成绩", "语文成绩", "英语成绩", "平均成绩");
for (int i = 0; i < count; i++) {
print_student(students[i]);
}
}
void write_students(Student *students, int count, char *filename)
{
FILE *fp = fopen(filename, "w");
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
fprintf(fp, "%-10s%-10s%-10s%-10s%-10s%-10s\n", "学号", "姓名", "数学成绩", "语文成绩", "英语成绩", "平均成绩");
for (int i = 0; i < count; i++) {
fprintf(fp, "%-10d%-10s%-10.2f%-10.2f%-10.2f%-10.2f\n", students[i].id, students[i].name, students[i].math, students[i].chinese, students[i].english, students[i].average);
}
fclose(fp);
}
void read_students(Student *students, int count, char *filename)
{
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("无法打开文件!\n");
exit(1);
}
char line[100];
fgets(line, 100, fp); // 跳过表头
for (int i = 0; i < count; i++) {
fscanf(fp, "%d%s%f%f%f%f", &students[i].id, students[i].name, &students[i].math, &students[i].chinese, &students[i].english, &students[i].average);
}
fclose(fp);
}
void sort_students(Student *students, int count)
{
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (students[i].average < students[j].average) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
void insert_student(Student *students, int *count, Student new_student)
{
int pos = -1;
for (int i = 0; i < *count; i++) {
if (new_student.average >= students[i].average) {
pos = i;
break;
}
}
if (pos == -1) {
pos = *count;
}
(*count)++;
for (int i = *count - 1; i > pos; i--) {
students[i] = students[i - 1];
}
students[pos] = new_student;
}
```
程序运行后,会要求输入 5 个学生的信息并计算出平均成绩,然后将学生信息写入文件 stud.txt,再从文件中读取学生信息并按平均分进行降序排序,将排序后的学生信息写入文件 stu_sort.txt。接着会要求输入新学生的信息并插入到 stu_sort.txt 文件中,最后会再次将学生信息写入 stu_sort.txt 文件以更新。
相关推荐
![](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)