[ 提交 ] [状态] 题目描述 文本文件 score.dic 中存储了 $n$ 名学生的信息(班级编号,姓名,成绩),每个学生信息占一行,每行的数据之间使用制表符分割,如下所示:145811 fuxin 100 145811 chengxian 90 145812 zhangxue 92 145812 lijun 88 ...将文本文件 score.dic 中所有英文字母改成大写,其它字符保持不变,将结果输出。#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main() { char curch, lastch; /* 当前读入字符,上一次读入字符*/ FILE *fin; /* 输入文件 */ fin= fopen("score.dic", "r"); /* 打开输入文件读 */ if (!fin) /* 文件打开失败 */ { fprintf(stderr, "error open file!\n"); /* 输出错误信息到标准错误设备 */ exit(-1); /* 强制退出,并返回错误码 */ } /**************************/ /* 遍历输入文件的每一个字符 */ /* 当前字符是字母 */ /* 转换为大写,并输出 */ /* 其它字符保持不变 */ /* 关闭输入文件 */ /*************************/ return 0; }主程序已给出,请根据提示完成缺失部分并提交该部分。 输入 $n$ 名学生的信息。(班级编号,姓名,成绩)(文件读入) 输出 经过变换后的学生信息。
时间: 2023-06-29 12:17:37 浏览: 64
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char curch, lastch;
FILE *fin;
fin = fopen("score.dic", "r");
if (!fin) {
fprintf(stderr, "error open file!\n");
exit(-1);
}
while ((curch = fgetc(fin)) != EOF) {
if (isalpha(curch)) { // 如果是字母
putchar(toupper(curch)); // 转换为大写并输出
} else {
putchar(curch); // 其它字符保持不变
}
}
fclose(fin);
return 0;
}
```
注意修改文件路径和文件名。
相关问题
设一个文本文件marks.txt中存储了学生的姓名及成绩
好的,你可以使用Python的文件操作和字符串操作功能来处理这个文本文件。下面是一些示例代码,可以帮助你实现一些基本功能。
假设`marks.txt`的内容如下:
```
张三 96
李四 95
王五 98
```
### 读取文件内容并输出到屏幕上
```python
with open('marks.txt', 'r') as file:
for line in file:
print(line.rstrip('\n'))
```
这段代码中,使用`with`语句打开文件,并按行读取文件内容。`rstrip('\n')`函数用于删除行末的换行符,以避免输出时出现多余的空行。
### 将文件内容保存到列表中
```python
marks = []
with open('marks.txt', 'r') as file:
for line in file:
marks.append(line.rstrip('\n'))
print(marks)
```
这段代码中,使用一个空列表`marks`来保存文件的内容。在每一行读取完毕后,将其添加到`marks`列表中。最后输出`marks`列表的内容。
### 将文件内容保存到字典中
```python
marks = {}
with open('marks.txt', 'r') as file:
for line in file:
name, score = line.rstrip('\n').split(' ')
marks[name] = int(score)
print(marks)
```
这段代码中,使用一个空字典`marks`来保存文件的内容。在每一行读取完毕后,将姓名和成绩分别保存在`name`和`score`变量中,然后将其作为一对键值对添加到`marks`字典中。最后输出`marks`字典的内容。注意要将读取到的成绩转换为整数类型,否则会以字符串形式保存在字典中。
输入学生姓名,Java成绩,按分数从高到低排序后存储在文件score.txt中。
好的,以下是Java语言的代码实现:
```java
import java.io.*;
import java.util.*;
public class ScoreSorter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Student> students = new ArrayList<>();
// 输入学生信息
while (true) {
System.out.print("请输入学生姓名(输入0结束输入):");
String name = scanner.next();
if ("0".equals(name)) {
break;
}
System.out.print("请输入" + name + "的Java成绩:");
int score = scanner.nextInt();
students.add(new Student(name, score));
}
// 按分数从高到低排序
Collections.sort(students);
// 将排序后的结果写入文件
try (BufferedWriter writer = new BufferedWriter(new FileWriter("score.txt"))) {
for (Student student : students) {
writer.write(student.getName() + " " + student.getScore());
writer.newLine();
}
System.out.println("成绩已保存到score.txt文件中");
} catch (IOException e) {
e.printStackTrace();
}
}
static class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student o) {
return o.score - this.score;
}
}
}
```
在运行程序后,按照提示输入学生姓名和Java成绩,输入0结束输入。程序会将学生信息按照Java成绩从高到低排序,并将排序结果写入文件score.txt中。