学术诚信声明:
本人郑重声明,本报告的全部研究与撰写工作均由本人独立完成,内容真实可靠,未抄袭、剽窃他人学术成果;文中所有引用的文献、数据、观点均已按规范注明出处,无任何伪造、篡改数据或虚假引用行为;本人严格遵守学术署名规范,无挂名、冒名等学术不端情形。本人已充分知晓学术不端行为的严重后果,自愿接受监督与核查,若有违反,愿承担一切相应责任。
摘要
本报告基于课程任务要求,选取编号为62的复古C语言代码进行修复与解析。任务过程包括:从初始编译错误分析开始,逐步修正代码中的过时语法和函数调用,成功编译运行;深入理解代码算法逻辑,绘制流程图进行解析;将文件重命名为"62last3.c";使用VSCode进行现代化项目管理和编译测试;最后通过Git进行版本管理并提交到Gitee仓库。通过本次任务,不仅掌握了古老C语言代码的现代化迁移技能,还深入理解了模幂运算算法及其应用场景,提升了对C语言标准演变的认识。
1.选题与准备
选择编号62的代码主要基于以下理由:该代码展示了模幂运算算法;代码结构清晰,便于深入分析和理解;通过修复过程可以学习到C语言标准的演变历程。
1.1环境准备
操作系统:Windows 10
编译器:codeblocks-25.03 ;VSCode 1.107 ;gcc 15.2.0
辅助工具:CSDN、DeepSeek等
2.编译调试过程
2.1初始编译与错误分析
建立C语言文件工程

图1.建立C语言工程

图2.编译报错
1.|error: implicit declaration of function 'clrscr' [-Wimplicit-function-declaration]|
clrscr报错
2.|error: implicit declaration of function 'getch'; did you mean 'getc'? [-Wimplicit-function-declaration]|
getch报错
2.2错误修正
1.void main()不符合C99及以上标准,应改为int main()
int main()
2.clrscr() 不是标准C函数,可以用 system("cls") 代替
clrscr()是Turbo C特有的清屏函数,不是标准C函数
添加头文件#include<stdlib.h>
3.getch() 需要包含 conio.h 头文件
#include<conio.h> // 添加这个头文件用于getch()
2.3反复调试
修改后编译成功

图3.编译成功
3.代码理解与重命名
这个程序的功能是:计算高次幂运算的最后三位数字。
具体来说:
输入:程序要求用户输入两个整数 X 和 Y
计算:计算 X 的 Y 次方(X^Y)的结果
输出:只输出计算结果的最后三位数字
3.1运行测试

图4.编译运行成功
计算13的10次方 后三位
输入:13 和 10(计算 13^15)
输出:13^10 = 137,858,491,849 ,程序只输出最后三位数字849
程序正确
算法特点:使用模运算(%1000)在每次乘法后只保留后三位,避免了大数计算的溢出问题,可以计算非常大的幂运算,而不受整数范围限制。
3.2代码解析

图5.程序流程图
核心算法
for(i=1; i<=y; i++)
last = last * x % 1000;
该循环执行Y次,每次将last乘以X后取模1000,始终保持last为不超过999的值,避免了整数溢出。
3.3重命名

图6.重命名文件
根据程序功能,将原文件62.c重命名为:62last3.c。"62last3":简洁明了地描述了程序的核心功能——计算高次幂运算的最后三位(last three digits)。这个命名比原文件名62.c更具描述性,任何人看到文件名就能大致了解程序的作用,提高了代码的可读性和可维护性。
4.使用VSCode管理项目
4.1VSCode环境配置
安装步骤:
从官网下载安装VSCode

图7.重命名文件
安装C/C++扩展(Microsoft官方)

图8.安装插件
下载GCC,下载配置MinGW编译器路径

图9.配置系统环境变量
环境变量PATH中添加MinGW/bin/位置
配置tasks.json:
4.2在VSCode中编译运行

图10VSCode中运行有问题,显示混乱
编译通过,但是在终端中显示混乱 ,遇到问题,使用AI(deepseek)配置launch.json
version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 改为true避免输入问题
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe",
"setupCommands": [
{
"description": "启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}
按Ctrl shift B编译

图11.VSCode中编译成功
F5运行

图12.在VScode中成功运行
5.代码版本管理
5.1Gitee仓库创建
注册登录Gitee,创建新仓库,选择开源

图13.创建gitee仓库
5.2安装配置git

图14.配置git成功
配置用户信息,初始化仓库,
使用VSCode图形化界面进行提交和推送


图15.VScode上传管理代码

图16.上传成功
6.总结
通过本次复古C语言代码修复任务,我在技术层面获得了多方面的重要提升。首先,我了解了C语言从传统到现代标准的演变过程。
1.在修复过程中,我亲身体验了早期C语言(如Turbo C风格)与现代C99/C11标准之间的差异,这让我认识到编程语言标准化的必要性以及向后兼容性的挑战。
2.我的调试能力得到了显著提高。通过使用MinGW-gcc等多种编译器,我掌握了不同环境下错误诊断的方法,学会了如何解读编译器的错误和警告信息,并能快速定位问题的根源。
3.我更熟练地学会使用VScode和Gitee。从最初的单一IDE环境,到现在能够熟练运用VSCode进行代码编辑、GCC进行编译调试、Git进行版本管理的完整工作流程,这些技能的掌握为我今后的软件开发工作奠定了坚实基础。
4.这次复任务让我对C语言有了更深入的理解。我认识到遵循语言标准不仅是一种规范要求,更是确保代码长期可维护性的重要保障。
5.程序中使用的模运算技巧——通过每次乘法后立即取模来避免整数溢出——展示了算法优化的重要性。这种在资源受限环境下优化计算的方法,让我深刻理解了"空间换时间"的算法设计思想在实际应用中的价值。
附录
·代码地址(Gitee仓库链接)
https://gitee.com/sun-shiq/c_code/blob/master/62last3.c
相关参考资料
1.手把手教你 之 VScode配置C/C++编译环境https://cloud.tencent.com/developer/article/1826173
2.VS Code与Gitee的完美结合:初学者的配置指南
https://developer.baidu.com/article/details/3254629
3.VSCode中操作gitee
https://blog.csdn.net/weixin_48088839/article/details/146417995
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/ssq20070913/article/details/156650647



