随笔分类 - 课程——C语言程序设计
主要是初学C语言时写的小代码,不涉及算法,不乏很多bug
摘要:今天打比赛的时候竟然下一没有想起来, 实际上是非常简单的。 举例说明: $64 = 2 \times 3^3 + 1 \times 3^2 + 3^0$ 根据秦九韶算法每次提出3,即 $3(2 \times 3^2 + 1 \times 3^1) + 1 = 64$, 可见得到最低位系数只需要对3取
阅读全文
摘要:今天在编译一段C源程序时,遇到编译错误提示 error: variably modified 'data' at file scope。原因在于代码头部有这样几行: 在C语言中,const不是一个真真正正的常量,其代表的含义仅仅是只读。使用const声明的对象是一个运行时对象,无法使用其作为某个量的
阅读全文
摘要:问题 报错ValueError: must have exactly one of create/read/write/append mode 原因是你使用了不存在的使用方式,例如rw。 合法的mode有: r、rb、r+、rb+、w、wb、w+、wb+、a、ab、a+、ab+ 这些在C语言中都有,
阅读全文
摘要:将马放到国际象棋的8*8棋盘上的任意指定方格中,按照“马”的走棋规则将“马”进行移动,要求每个方格进入且只进入一次,走遍棋盘上的64个方格,将数字1,2,3…,64依次填入一个8*8的方阵。马在国际象棋中的走法如右图所示。 涉及的计算思维 解决这个问题可以利用到计算机中的两种方法,一种是深度优先搜索
阅读全文
摘要:功能介绍 绘制出图形界面,支持鼠标点击实现四则运算(可带括号),同时具有清零和撤回操作。另外一种模式,可以绘制一些特定的函数图像。 代码实现 注意 本人使用的是VS2017,上面的代码直接粘贴过去大概率跑不起来,需要做一点修改: 1、若提示graphics.h不存在,需要先安装EasyX图形库 2、
阅读全文
摘要:递归的可视化 修改递归函数,使其能够显示打印出每次函数递归调用的形参的值。 每一级调用的输出都带有一级缩进,就是使得程序的输出清晰、有趣并且有含义。 思路 以斐波那契数列为例,假设n=5,递归的形参如下: 效果图如下: 代码实现
阅读全文
摘要:游戏简介 场景沉浸式游戏,遇到不同的场景,你有不同的选择,历时三天,你就能取得胜利。 代码 备注:游戏非常有趣,但代码却很简单,C语言入门的同学就可以拿来练手。很久之前在贴吧(C语言吧)见得,对作者佩服得五体投地啊!
阅读全文
摘要:游戏简介 经典的推箱子是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。 思路 模拟题。难点在于推箱子的动作,如果箱子前方是箱子或者墙壁都不能被推动,是目的地或空地可以。撤回操作是通过一个三维数组记录每一步
阅读全文
摘要:桶排序思想 桶排序的思想就是把数组分到有限的桶中,然后再分别排序,最后将各个桶中的数据有序的合起来,具体如下: (1)设计好桶的大小和桶的个数 (2)遍历数组,把每个元素放到对应的桶中 (3)对每个桶分别排序(可以递归使用桶排序,也可以使用其它排序) (4)遍历桶中的数据,将数据有效的合起来 复杂度
阅读全文
摘要:问题描述 给定字符串,求出该字符串的所有组合,即它的所有字串。例如“abc”,应该得到"a","b","c","ab","ac","bc","abc"。 思路一 如果没有要求按长度从小到大输出,可以逐位考虑是否选取,代码如下: 思路二 如果要求按长度从小到大输出,我们可以先考虑长度为len的字串的所
阅读全文
摘要:游戏介绍 井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似。然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线(包括行、列、对角线、反对角线),则为获胜。 解决策略 重点在于电脑方如何下棋,我们采取估计棋局每个
阅读全文
摘要:牛顿迭代法(Newton's method) 又叫“牛顿-拉弗森方法”(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法,方法是使用f(x)泰勒级数前几项来寻找f(y) = 0的根。 原理 对于非线性方程同样适用 总之,牛顿迭代公式: 应用 求某些方程的根
阅读全文
摘要:随机数的生成 对程序测试时,经常需要生成一些随机数。随机数的生成可使用函数 rand。 注:1、如果没有使用函数srand进行初始化,那么每次运行程序时将得到同样的随机数序列。 2、rand的返回值是一个 [0,RAND_MAX] 的整数,RAND_MAX的值取决于库,但保证任何库中至少为32767
阅读全文
摘要:对拍 不停的随机生成测试数据,分别运行两个程序并对比其结果。这个任务被形象的称为对拍 。 流程 (1)编写好生成随机数程序(r.cpp),我的程序(a.cpp),标准程序(b.cpp),编译 (2)将生成的r.exe、a.exe、b.exe以及批处理脚本(.bat)放到同一个文件夹下 (3)运行批处
阅读全文