高级语言程序设计课程第十次个人作业
高级语言程序设计课程第十次个人作业
- 这个作业属于哪个课程:2024高级语言程序设计
- 这个作业要求在哪里:高级语言程序设计课程第十次个人作业
- 学号:032201218
- 姓名:陈彦哲
一、
1.1
题目:
编写一个程序,将一个文件的内容复制到另一个文件中。
#include <stdio.h> int main() { char sourceFile[100], targetFile[100], ch; FILE *source, *target; printf("请输入源文件名:"); scanf("%s", sourceFile); printf("请输入目标文件名:"); scanf("%s", targetFile); source = fopen(sourceFile, "r"); if (source == NULL) { printf("无法打开源文件。\n"); return 1; } target = fopen(targetFile, "w"); if (target == NULL) { printf("无法创建目标文件。\n"); fclose(source); return 1; } while ((ch = fgetc(source)) != EOF) { fputc(ch, target); } fclose(source); fclose(target); printf("文件已成功复制。\n"); return 0; }
复制前:
复制过程:
复制后:
思路:
根据题意理解即可。
问题:无
解决:无
1.2
题目:
编写一个程序,统计一个文本文件中的字符数。
#include <stdio.h> int main() { char fileName[100]; FILE *file; char ch; int count = 0; printf("请输入文件名:"); scanf("%s", fileName); file = fopen(fileName, "r"); if (file == NULL) { printf("无法打开文件。\n"); return 1; } while ((ch = fgetc(file)) != EOF) { count++; } fclose(file); printf("文件中的字符数为:%d\n", count); return 0; }
思路:按题意理解即可
问题:无
解决:无
1.3
题目:编写一个程序,读取一个文本文件的内容,并在控制台上显示。
#include <stdio.h> int main() { char fileName[100]; FILE *file; char ch; printf("请输入文件名:"); scanf("%s", fileName); file = fopen(fileName, "r"); if (file == NULL) { printf("无法打开文件。\n"); return 1; } while ((ch = fgetc(file)) != EOF) { putchar(ch); } fclose(file); return 0; }
思路:按题意理解即可
问题:无
解决:无
1.4
题目:编写一个程序,向一个文本文件的末尾追加一行文本。
#include <stdio.h> int main() { char fileName[100], text[100]; FILE *file; printf("请输入文件名:"); scanf("%s", fileName); printf("请输入要追加的文本:"); getchar(); fgets(text, 100, stdin); file = fopen(fileName, "a"); if (file == NULL) { printf("无法打开文件。\n"); return 1; } fputs(text, file); fclose(file); printf("文本已成功追加。\n"); return 0; }
添加前:
添加后:
思路:按题意理解即可
问题:无
解决:无
1.5
题目:编写一个程序,读取一个文本文件,删除文件中的特定行(例如,包含特定单词的行),并将结果保存到新文件中。
#include <stdio.h> #include <string.h> int main() { char sourceFile[100], targetFile[100], keyword[100], line[256]; FILE *source, *target; printf("请输入源文件名:"); scanf("%s", sourceFile); printf("请输入目标文件名:"); scanf("%s", targetFile); printf("请输入要删除的关键字:"); scanf("%s", keyword); source = fopen(sourceFile, "r"); if (source == NULL) { printf("无法打开源文件。\n"); return 1; } target = fopen(targetFile, "w"); if (target == NULL) { printf("无法创建目标文件。\n"); fclose(source); return 1; } while (fgets(line, sizeof(line), source)) { if (strstr(line, keyword) == NULL) { fputs(line, target); } } fclose(source); fclose(target); printf("处理完成,结果已保存到目标文件。\n"); return 0; }
修改前:
修改后:
思路:按题意理解即可
问题:一开始不知道怎么快速检索
解决:后面经过查阅资料学习了strstr函数的用法,把程序的效率提升了
1.6
题目:
计算并显示一个文件的大小(以字节为单位),要求使用ftell。
#include <stdio.h> int main() { char fileName[100]; FILE *file; long fileSize; printf("请输入文件名:"); scanf("%s", fileName); file = fopen(fileName, "rb"); if (file == NULL) { printf("无法打开文件。\n"); return 1; } fseek(file, 0, SEEK_END); fileSize = ftell(file); fclose(file); printf("文件大小为:%ld 字节\n", fileSize); return 0; }
思路:按题意理解即可
问题:无
解决:无
1.7
题目:
有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"student.txt"中。
#include <stdio.h> typedef struct { int id; char name[50]; float scores[3]; float average; } Student; int main() { Student students[5]; FILE *file; int i, j; printf("请输入 5 位学生的学号、姓名和 3 门课成绩:\n"); for (i = 0; i < 5; i++) { printf("第 %d 个学生:\n", i + 1); printf("学号:"); scanf("%d", &students[i].id); printf("姓名:"); scanf("%s", students[i].name); printf("三门课成绩:"); for (j = 0; j < 3; j++) { scanf("%f", &students[i].scores[j]); } students[i].average = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3.0; } file = fopen("student.txt", "w"); if (file == NULL) { printf("无法创建文件。\n"); return 1; } fprintf(file, "学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n"); for (i = 0; i < 5; i++) { fprintf(file, "%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].average); } fclose(file); printf("数据已成功写入文件 student.txt。\n"); return 0; }
思路:按题意理解即可
问题:无
解决:无
三、总结思考:
- 复习了C语言关于文件操作的函数的用法,比如
fopen、fclose、fgetc、fgets、fputs、strstr
等函数的用法 - 学习了C语言文件指针的操作的用法,让我学习到了利用诸如ftell和fseek等函数操作文件指针从而实现对文件的定位和操作,这种方法既高效又快捷,值得认真学习
- 复习了结构体的使用,对结构体的灵活性有了更深刻的体会,对我的编程水平的提升有很大帮助,为我未来的编程打下了良好的基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」