286、编写一个程序,从命令行读取一个文本文件的名称,并显示该文件中最长的行。假设长度最长的行只有一行。该程序还应显示文件中每个数字 [0, 9] 的出现次数。此外,程序应读取一个整数(例如,x)并显示文件的最后 x 行。程序应检查输入的数字不大于总行数。例如,如果用户输入 3,程序应显示文件的最后三行。有一个限制:程序每行只能读取一次。假设文件行数少于 1000 且每行字符数少于 100。
以下是实现该功能的 Python 代码示例:
import sys
# 从命令行获取文件名
if len(sys.argv) != 2:
print('请提供文件名作为命令行参数。')
sys.exit(1)
filename = sys.argv[1]
# 初始化变量
longest_line = ''
line_count = 0
lines = []
# 用于记录每个数字的出现次数
digit_count = [0] * 10
# 读取文件
try:
with open(filename, 'r') as file:
for line in file:
line = line.rstrip() # 去除行尾的换行符
lines.append(line)
line_count += 1
# 更新最长行
if len(line) > len(longest_line):
longest_line = line
# 统计数字出现次数
for char in line:
if char.isdigit():
digit_count[int(char)] += 1
# 显示最长行
print('最长的行:', longest_line)
# 显示每个数字的出现次数
print('每个数字 [0, 9] 的出现次数:')
for i in range(10):
print(f'{i}: {digit_count[i]}')
# 读取用户输入的整数
while True:
try:
x = int(input('请输入一个整数以显示文件的最后 x 行:'))
if 0 < x <= line_count:
break
else:
print('输入的数字应大于 0 且不大于总行数,请重新输入。')
except ValueError:
print('输入无效,请输入一个整数。')
# 显示最后 x 行
print(f'文件的最后 {x} 行:')
for line in lines[-x:]:
print(line)
except FileNotFoundError:
print(f'文件 {filename} 未找到。')
代码说明:
- 获取文件名 :从命令行参数获取要读取的文件名。
- 读取文件 :逐行读取文件,记录最长行、总行数和每行内容,同时统计每个数字的出现次数。
- 显示最长行和数字出现次数 :输出最长行和每个数字的出现次数。
- 读取用户输入 :要求用户输入一个整数
x,确保输入的数字在有效范围内。 - 显示最后 x 行 :输出文件的最后
x行。
复杂度分析:
- 时间复杂度 :$O(n)$,其中 $n$ 是文件的总行数。
- 空间复杂度 :$O(n)$,主要用于存储文件的所有行。
287、定义一个结构体类型“book”,其成员包括书名(title)、作者(author)和价格(price)。假设“book.dat”二进制文件包含100个这样的结构体。编写一个程序,该程序读取书籍条目的序号(例如25)和新数据,并用新数据替换现有数据。然后,程序应从文件中读取该条目的数据并显示出来,以验证是否正确写入。
以下是实现该功能的示例代码:
#include &
C语言文件处理与宏定义实例

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



