关注

复古C语言游戏代码修复与解析——以62last3.c为例

学术诚信声明:
 
本人郑重声明,本报告的全部研究与撰写工作均由本人独立完成,内容真实可靠,未抄袭、剽窃他人学术成果;文中所有引用的文献、数据、观点均已按规范注明出处,无任何伪造、篡改数据或虚假引用行为;本人严格遵守学术署名规范,无挂名、冒名等学术不端情形。本人已充分知晓学术不端行为的严重后果,自愿接受监督与核查,若有违反,愿承担一切相应责任。

摘要

           本报告基于课程任务要求,选取编号为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

辅助工具:CSDNDeepSeek

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

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--