摘要

本文分享了介绍了选题动机和开发环境配置(Windows11、Dev-C++、VSCode等)。重点描述了编译调试阶段遇到的问题:非标准库函数使用、main函数返回值不规范等,并详细说明了解决方案。随后对八皇后问题代码进行了功能解析,包括棋盘初始化、冲突检测、递归放置等核心逻辑。文章还记录了VSCode配置和Git版本管理的具体操作步骤。最后总结了从抽象算法到具体实现的编程体会,指出代码虽简单却蕴含精妙逻辑。附录提供了项目仓库地址。

1.选题与准备

1.1选题

我从课程资源 GameCode155.rar 的项目中,选取 59号逆矩阵的计算作为分享主题,想来也没有什么特殊的原因,就是喜欢这个数字。

1.2环境准备

  • Windows 11

  • Dev-C++ 5.11、Vscode1.107.1 、 gcc6.3.0

  • 豆包,deepseek

2.编译调试过程

2.1初始编译与错误分析

初始编译的错误和警告如图所示:

根据查找到的信息来看,这些错误源于:

 非标准库函数的使用

  • clrscr() 函数:这是 Borland/Turbo C 特有的清屏函数,不属于标准 C 库。现代编译器(如 GCC、Clang、MSVC)不再支持这个函数。
  • getch() 函数:同样是 Borland/Turbo C 特有的函数,用于从控制台读取单个字符而无需按回车键。现代编译器也不再支持这个函数。

main 函数返回值问题

  • 错误:代码中 main 函数被定义为 void main(),这不符合 C 语言标准。
  • 正确:C 语言标准要求 main 函数必须返回 int 类型,即 int main(),并且在函数末尾使用 return 0; 返回值。

 函数声明问题

  • 错误:在 C 语言中,函数必须在使用前声明或定义。如果函数定义在使用之后,需要在使用前进行声明。
  • 正确:应该在代码开头添加函数声明,或者将函数定义放在使用之前。

 代码可移植性差

  • 由于使用了非标准库函数,代码无法在不同编译器和操作系统之间移植。
  • 例如,clrscr() 在 Windows 上可以使用 system("cls") 替代,在 Linux/Unix 上可以使用 system("clear") 替代。

2.2错误修正

替换非标准库函数
  • clrscr() 替换为跨平台的 clear_screen() 函数
  • getch() 替换为跨平台的 wait_for_key() 函数
 修复 main 函数返回值问题
  • 将 void main() 改为 int main()
  • 在函数末尾添加 return 0;
添加函数声明
  • 在代码开头添加所有函数的声明,确保函数在使用前已经声明
 增强代码可移植性
  • 使用条件编译支持不同操作系统
  • 在 Windows 上使用 system("cls") 清屏,在 Linux/Unix 上使用 system("clear") 清屏
  • 使用标准输入输出函数实现类似 getch() 的功能

2.3反复调试

反复修改直至零错误警告

3代码的理解和命名

3.1运行测试

在8×8的国际象棋棋盘上放置8个皇后,使得它们互不攻击,即任何两个皇后都不能在同一行、同一列或同一对角线上。

3.2代码解析

  1. 开始:程序启动,清屏并显示提示信息。

  2. 初始化:定义棋盘大小和存储皇后位置的数组。

  3. 放置皇后:从第0行开始,尝试在每一列放置皇后。

  4. 检查冲突:对于每个位置,检查是否与已放置的皇后冲突(同一列或同一对角线)。

  5. 递归放置:如果当前位置安全,则递归调用自身,继续放置下一行的皇后。

  6. 输出结果:如果所有皇后都已放置完成(即放置到第8行),则输出当前的棋盘布局。

  7. 回溯调整:如果当前行的所有列都尝试过且都不安全,则回溯到上一行,尝试其他列。

  8. 结束:当所有可能的布局都尝试完成后,等待用户按键退出程序。

4使用vscode管理项目

4.1vscode配置

安装vscode:官网下载安装包,根据提示一步步安装

配置vscode:从左侧拓展栏搜索c相关插件

c语言环境配置:下载MinGW-w64并解压到中文路径,右键 “此电脑→属性→高级系统设置→环境变量”,在系统Path中添加该bin路径,cmd 输入gcc -v验证。

关联编译器:在 VSCode 中按Ctrl+Shift+P,输入C/C++: Edit Configurations (UI),选择 MinGW-w64 的gcc.exe路径。
 

4.2在vscode中编译运行

5代码版本管理

5.1Gitee仓库创建

1. 登录Gitee → 点右上角「+」→ 选「新建仓库」

(没账号先注册:gitee.com注册)

2. 填2个必填项,其他默认 → 点「创建」
  • 仓库名称:起个名字(比如 test

  • 是否开源:选「公开」(或私有,看需求)

3. 完成!

5.2vscode中集成git

Git 环境准备
已安装 Git 并配置好用户信息,在Git Bash执行git config --global user.name "用户名"和git config --global user.email "邮箱"

6总结

这次改八皇后的代码,最大的感受是 “把抽象算法落地成代码的踏实感”。最开始对着框架写,只知道 “要循环、要递归”,改完才摸清门路:put_chess是 “挨个试列”,check_cross是 “堵死冲突路”。细节上也摸清了:比如board存的是 “列号”,打印时直接输出就能看每个皇后的位置;MAX=8的边界要卡准,不然要么少打要么越界。现在再看这几行代码,不是 “字符堆”,是 “8 个皇后挨个找位置的过程”—— 简单的代码里,藏着挺妙的逻辑。

附录

https://gitee.com/dysaadjasu/59.c.git

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐