C语言学习日记
文章平均质量分 60
小猫爱学习
夫唯不争,故天下莫能与之争。
展开
-
C语言学习日记(17)——回溯法解数独(2)
通过前面的分析,就可以写出解数独的代码了。#include <stdio.h> void fill(int sd[][9]); //使用回溯法求解数独int main(){ int sd[9][9] = { // “世界最难数独”信息 8,0,0,0,0,0,0,0,0, 0,0,3,6,0,0,0,0,0, 0,7,0,0,9,0,2,0,0, 0,5,0,0,0,7,0,0,0,原创 2021-06-12 10:27:08 · 615 阅读 · 0 评论 -
C语言学习日记(16)——回溯法解数独(1)
数独是一种很流行的填数游戏,不少人都喜欢玩。用计算机来解数独也算是一个比较好的练习。恰好多年前看到过一则新闻,说是有个老人花了三天解了一个“世界最难数独”,我们就用计算机来求解一下。先看看这个号称世界最难的数独:...原创 2021-06-12 10:21:41 · 1173 阅读 · 0 评论 -
C语言学习日记(15)——回溯法解迷宫非递归版
用递归来实现回溯应该是很常见的一种思路。因为回溯法最核心的问题就是如何保存每一步已经选择过的方案信息,以供回退时继续选择下一个方案。而使用递归函数恰好利用了函数调用栈保存了每一步的“进度”,使得每一次函数返回时上一级函数可以继续这个“进度”。虽然递归实现起来简单易理解,但使用递归并不是唯一的选择,而且,使用递归总给人一种效率可能不高的感觉。通过简单改造,我们也可以使用非递归的方法来实现回溯法。具体思路是:为了保存每一步的“进度”,可以这样做,用一个int choose[25]数组来充当一个栈,数组每原创 2021-06-12 10:17:31 · 898 阅读 · 0 评论 -
C语言学习日记(14)——迷宫算法的一点优化
在迷宫算法中,每次试探,如果是通道的话,还要做“重复检测”,即检查这个坐标是否已经走过,只有当这个坐标没有走过时,才能添加到路径中。如果不做这一步检查,那么我们可能会不断重复已走过的路,陷入死循环。例如:...原创 2021-06-12 10:15:12 · 728 阅读 · 0 评论 -
C语言学习日记(13)——回溯法解迷宫(2)
将回溯法的过程分析清楚之后,我们就可以写代码了。之前已经用文字描述了算法,实际编写代码时可能有一些细节需要注意,我们在代码中用注释加以说明。//全局数据及主函数部分#include<stdio.h>//定义上下左右方向。int direction[4][2] = {-1,0,1,0,0,-1,0,1}; //表示迷宫的二维数组,这里直接将迷宫大小编写在里面了。int puzzle[5][5] = { 1,1,1,1,1, 0,0,1,0,1, 1,0,0,原创 2021-06-11 17:01:40 · 1066 阅读 · 0 评论 -
C语言学习日记(12)——回溯法解迷宫(1)
走迷宫是一种经典的智力游戏,相信很多人都玩过。我们走迷宫的过程一般是这样的:从入口开始尝试,如果走到某个位置有几种方案可以选择,则选择其中的一种方案进行尝试,不断重复这个过程。如果走不通,就回退到前一个位置选择下一个方案尝试,直到找到出口。这种方法叫做回溯法。利用计算机走迷宫的原理和人类走迷宫的原理是类似的。下面是一个简单的迷宫,深色方块代表墙,白色方块表示通道,入口和出口如图所示。...原创 2021-06-11 16:59:14 · 1736 阅读 · 0 评论 -
C语言学习日记(11)——const与指针
对于一个普通指针typet *p。p有三个最基本的能力,第一就是可以通过p = &obj来指向一个type类型对象,并随意切换指向对象。第二就是通过value = *p来读取它指向的对象的值。第三个就是通过*p = value来修改它指向的对象的值。在普通指针上加const,根据const位置的不同,会得到一些特殊的指针。相对于普通指针,它们丧失了一些能力,可以算是阉割版的指针。(1)在type前面加const,得到const type *p。这种指针失去了修改指向对象的值的能力,即不能通过原创 2021-06-11 15:58:01 · 1158 阅读 · 1 评论 -
C语言学习日记(10)——给心形加点闪动效果
昨天输出爱心已经成功了,但是感觉只是白色有点单调啊。要是能加点动态效果,应该更好一点吧。今天,小猫想改变一下输出的爱心的颜色,让它闪动起来。怎么改变控制台输出的字符颜色呢?可以用这个函数system("color XX"),这个函数在stdlib.h文件中。它可以改变整个控制台的背景颜色和前景颜色。其中的参数是一条字符串"color XX",中间有个空格。XX是两个16进制数,分别代表背景颜色和前景颜色,所以总的颜色有16种。小猫记得0代表黑色,1代表蓝色,等等。这样"color 01"就代表输出背景为原创 2021-06-11 15:55:07 · 9108 阅读 · 7 评论 -
C语言学习日记(9)——用C语言写一个爱心
怎么输出心形呢?小猫想,在纸上先画一个心形,然后再写成代码,这应该是最简单的方案了。但是这样就是一行一行的写printf,感觉很没技术含量啊。能不能用一个表达式,一次性输出呢?小猫又想,先找一个心形曲线的数学方程,然后将它的内部填上字符‘*’,应该就可以了。小猫先搜索了一下心形曲线的数学方程,找到一个看起来比较好实现的:...原创 2021-06-11 15:50:12 · 19593 阅读 · 0 评论 -
C语言学习日记(8)——整数溢出
小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来。当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了。虽然当时还小,但好像也知道那是电子计算器位数不足,从此觉得计算机虽然神奇,但计算能力也是有限的。同样,计算机虽然计算能力强大,但计算能力也受位数的限制,并不是无穷的。以int类型为例,当我们定义一个int类型变量时,它的位数为32位,4个字节。...原创 2021-06-11 15:43:23 · 2372 阅读 · 0 评论 -
C语言学习日记(7)——变量的地址与指针变量
C语言中有许多基本的数据类型,如char,int,double等。char是字符类型,可以保存一个字符,int是整数类型,可以保存一个整数,double是双精度实型,可以保存一个实数。例如:原创 2021-06-11 15:26:28 · 3415 阅读 · 1 评论 -
C语言学习日记(6)——变量和地址
在C语言中使用变量,首先要对变量进行声明。声明变量很简单,只要告诉编译器变量的类型和名字就可以了。例如:int a; //声明了一个int类型的变量原创 2021-06-11 15:05:33 · 4462 阅读 · 1 评论 -
C语言学习日记(5)——time_t的类型与typedef
昨天输出时间的程序里面定义了一个time_t类型的变量,这是一种什么样的变量呢?小猫知道的C语言中的内置数据类型有char,int,long,float,double等等,但对time_t类型不太了解。因为在写程序时用到了time.h头文件,所以可能在time.h头文件中可以找到它的定义,试试看吧。小猫打开D:\mingw64\x86_64-w64-mingw32\include目录,找到了time.h这个头文件,在记事本里打开,查找time_t,发现这样一段代码:#ifndef _TIME_T_原创 2020-11-11 13:01:46 · 7442 阅读 · 2 评论 -
C语言学习日记(4)——输出当前时间
怎么获得当前时间呢?我们先来看一下C语言程序的基本结构,以Hello,World程序代码为例:#include <stdio.h>int main(){ printf("Hello,World!\n"); return 0;}这个程序只有6行,第一行叫做包含指令,其中的stdio.h叫做头文件,包含指令的格式就像上面一样。为什么要写这一条,可以简单理解为printf函数是放在stdio.h这个文件里面的,把它包含进来就可以使用printf函数了。stdio.h这个原创 2020-11-11 12:09:32 · 6642 阅读 · 0 评论 -
C语言学习日记(3)——printf函数
写一个实用一点的程序,总免不了输入和输出,昨天小猫在测试工具是否安装好的时候写了一个简单的程序,也用到了输出。C语言中printf函数就是用于输出的。printf基本的用法就是:printf("Hello,World!\n"); 括号内用双引号括起来的叫做一个字符串,也就是printf要输出的内容。如果我们想要输出一句话,就用这样一条语句printf("你想输出的话");就可以了。注意到字符串里面有个\n,这个叫做转义字符,它代表的意思是换行,还有很多转义字符,都是用\加上一个字母或符号来表示,需原创 2020-11-09 19:41:07 · 19830 阅读 · 0 评论 -
C语言学习日记(2)——写个Hello,World测试一下
感觉工具已经安装好了,但到底怎么样还要试过才知道。那就写一个经典的Hello,World程序测试一下吧!首先打开vscode,新建一个文件,输入代码。代码字体颜色全都是白色的,看到状态栏右下角,原来文件格式还是Plain Text,设置一下改为C就可以了。这时候看到还有很多语言可以选择,感觉还不错,怪不得很多人都推荐。hello,world代码接下来小猫在D盘根目录下新建一个code的文件夹专门用于存放代码。再将刚才输入的代码保存到这个文件夹。接下来干嘛?是不是可以运行了?点击一下左侧运行按钮原创 2020-11-06 11:28:12 · 9414 阅读 · 1 评论 -
C语言学习日记(1)——准备好工具
小猫开始学习C语言啦,首先选个喜欢的工具吧。C语言开发工具真多啊,什么C-Free,Code Lite,Code::Blocks,DevC++,VisualStudio,CLion等,这些工具里面VisualStudio小猫挺喜欢的,可惜小猫电脑配置比较低,VS这么高大上的工具很难带起来啦。听说vscode作为编辑器挺不错的,小猫的电脑应该也还带得起,编译环境的话就用MinGW-w64吧,就这么决定了。第一步:从官网上下载vscode的安装包。网址很容易的,百度一下vscode就行啦,也不妨记一下吧,h原创 2020-11-05 13:18:35 · 350 阅读 · 0 评论