复古C语言游戏代码修复与解析--168三位数的完全平方数
1.语法基础错误(编译致命)变量名大小写混乱:将代码中大写的I统一改为小写i(C 语言严格区分大小写,大写I会被判定为未定义变量);2.函数返回值 / 形参不规范:writeDat函数定义补充void返回值类型,与声明保持一致;修正writeDat函数声明的形参错误:int b → int b[](匹配数组传参的实际需求);main 函数规范:补充int返回值类型(符合 C 语言标准)。逻辑功能遗
摘要
本文记录了修复C语言程序"168 三位数的完全平方数"的过程。程序功能是筛选三位数完全平方数,且要求至少有两位数字相同。修复内容包括:修正变量大小写错误、规范函数声明与调用(如writeDat函数)、补充输出逻辑等。使用Dev-C++和VSCode进行调试,并通过Git将代码托管至Gitee仓库。最终程序能正确输出符合条件的数字到控制台和out168.dat文件,完整实现了原设计功能。整个修复过程聚焦于解决编译错误和逻辑遗漏,未改变原有算法核心。
1.选题与准备
1.1选题
我从GameCode155.rar中选取了168号作为分享的主题
1.2环境准备
操作系统:Windows 11
编译器:Dev-C++5.11
辅助工具:豆包 deepseek
2编译调试过程
2.1初始编译与错误分析

主要错误有
1 getch() 是 <conio.h> 头文件中的函数,但该头文件是Windows 平台(如 Dev-C++、VC)的非标准头文件,在 Linux/GCC 等环境下默认不支持。
2 clrscr() 也是 <conio.h> 中的非标准函数(用于清屏),同样依赖 Windows 平台。
3 writeDat 是你自定义的函数,但在使用它之前没有声明 / 定义(C/C++ 要求 “先声明后使用”)
2.2错误修正
使用void main()改为int main()
在代码最顶部新增一项一行头文件#include <conio.h>
2.3反复调试
3代码理解与重命名
3.1运行测试

筛选出所有「三位数的完全平方数」,且要求该数的百位、十位、个位中至少有两位数字相同,最终将符合条件的数字统计总数后,同时输出到控制台和out168.dat文件中。
3.2代码解析

3.3重命名
根据代码功能将原文件命名为"168 三位数的完全平方数"。
4使用VSCode管理项目
4.1VSCode环境配置
- 打开浏览器,访问:https://code.visualstudio.com
- 点击 “Download for Windows” 按钮
- 会自动下载 VSCodeUserSetup-x64-版本号.exe 文件
- 安装git。
4.2在VSCode中编译运行


5代码版本管理
5.1Gitee仓库创建
首先注册Gitee账号,随后注册一个仓库,如图
点击创建
5.2VSCode中集成Git
1打开VSCode,在资源管理器中选择要上传的文件
2初始化仓库,直到如图
3点击推送到注册的仓库地址
4点击发布到Branch
5之后会有一个验证登录gitee的程序,输入账号密码,登录
6等待片刻后,刷新gitee仓库完成
完成从VSCode推送到Gitee仓库
6总结
1.语法基础错误(编译致命)
变量名大小写混乱:将代码中大写的I统一改为小写i(C 语言严格区分大小写,大写I会被判定为未定义变量);
2.函数返回值 / 形参不规范:
writeDat函数定义补充void返回值类型,与声明保持一致;
修正writeDat函数声明的形参错误:int b → int b[](匹配数组传参的实际需求);
main 函数规范:补充int返回值类型(符合 C 语言标准)。 逻辑功能遗漏(无输出结果)
原main函数中遗漏调用核心输出函数writeDat(num, b),补充该调用后,程序才能将筛选结果输出到控制台和out168.dat文件。
3.函数声明 / 调用匹配问题(语法报错)
修正writeDat函数声明的形参类型,确保声明(void writeDat(int num,int b[]))与定义(void writeDat(int num,int b[]))、调用(writeDat(num, b))三者完全匹配。
本次修复聚焦 “让程序从‘无法编译 / 无输出’变为‘正常运行 / 输出符合预期’”,所有修改均为必要错误修正,未新增任何优化逻辑,严格贴合原代码的设计意图,修复后程序完整实现了 “筛选目标数字 + 控制台 / 文件双输出” 的核心功能。
附录
https://gitee.com/zj2671353273/hah.git
更多推荐
所有评论(0)