- 博客(52)
- 收藏
- 关注
原创 c语言学习_操作符2
sizeof 操作数的类型长度(以字节为单位),sizeof()内的表达式不参与运算。* 间接访问操作符(解引用操作符)~ 对一个数的二进制位按位取反。(类型) 强制类型转换。-- 前置,后置--++ 前置,后置++= 直接赋值符。& 取地址。- 负值。+ 正值。今天学习了赋值操作符和单目操作符。
2025-10-23 19:52:00
161
原创 c语言学习_操作符1
按位或符 对应的二进制位,同为0才为0,不同为0即为1。& 按位与符 对应的二进制位,同为1才为1,不同为1即为0。^ 按位异或符 对应的二进制位,相同为0,相异为1。算数右移:右边丢弃,左边补原符号位。逻辑右移:右边丢弃,左边补0。/的两端至少有一个是浮点数,才能得出小数。<<(左移操作符) 将二进制位向左移动一位。>>(右移操作符) 将二进制位向右移动一位。1.算数操作符(+,-,*,/,%)
2025-10-22 16:33:46
135
原创 c语言学习_数组使用_扫雷3
如果坐标处是雷,提示“很遗憾,你被炸死了”,游戏结束。排查雷的逻辑是先输入排查坐标,然后检查坐标处是否为雷,如果是雷游戏结束,如果不是雷,就统计周围坐标有几个雷,存储排查雷的信息到show数组,游戏继续。首先给出x,y,win三个变量。写一个while循环函数,win即不是雷的坐标数量,EASY_COUNT为雷的数量。将非雷的坐标排查完后,游戏胜利。今天继续进行扫雷的编写,上次写到布置雷,这次进行排查雷的编写。数字+‘0’即为‘数字’,‘数字’-‘0’即为数字。
2025-09-24 19:00:51
183
原创 c语言学习_数组使用_扫雷2
用srand(time())函数取随机值,生成随机的下标,来达到随机埋雷的效果。用随机值%行和列的长度,再加1,可以保证雷在棋盘中。然后再进行检验,一个位置为0时才可以在此处埋雷,防止重复。今天继续制作扫雷小游戏,上次做到打印棋盘。今天来优化一下棋盘并且在棋盘上布置雷。单纯打印棋盘,在玩家进行游戏的过程中容易找不到坐标,因此加了坐标的打印。
2025-09-22 21:44:04
282
原创 c语言学习_数组使用_扫雷1
首先要有一个棋盘,需要两个数组,一个用来存放布置好雷的信息,另一个用来存放排查出雷的信息。然后初始化棋盘,将第一个数组全部初始化为0,第二个全部初始化为*。和三子棋一样,项目中创建三个文件,test.c测试游戏的逻辑,game.h用来声明相关的函数、符号、头文件包含,game.c来设计游戏相关函数。在game.c里设计用来初始化棋盘的函数InitBoard和用来打印棋盘的函数DisPlay,并在game.h里声明这两个函数。将‘0’和‘*’也作为参数传参,InitBoard就可以适用于两个棋盘。
2025-08-23 17:51:25
258
原创 c语言学习_数组使用_三子棋2
玩家输入坐标进行落子,因为玩家不可控,不知道输入的坐标是否在棋盘内,因此要先判断坐标的合法性。如果被占用进行提示后循环重新输入,如果没被占用,则将此处坐标更改为‘*’,即玩家落子成功,跳出循环。之后验证坐标内是否为空,不为空循环重新取值,为空则此处坐标更改为‘#’,即为电脑落子成功,跳出循环。设计完玩家和电脑落子的函数,继续设计一个函数来判断输赢,在每次玩家和电脑落子后判断胜负,命名为IsWin,返回类型为char。设计逻辑为,返回'*'玩家赢,返回‘#’电脑赢,返回‘Q’为平局,返回‘C’继续游戏。
2025-08-21 19:10:09
158
原创 c语言学习_数组使用_三子棋1
即‘空格、字符、空格’加‘|’这两个元素组成一行,随棋盘宽度延伸,‘---’和‘|’组成一行,随棋盘宽度延伸。在game.c中设计一个打印棋盘的函数,在game.h中进行声明。项目中创建三个文件,test.c测试游戏的逻辑,game.h用来声明相关的函数、符号、头文件包含,game.c来设计游戏相关函数。初始化棋盘,在game.c中设计一个用来初始化棋盘的函数,并且在game.h中进行声明。其中ROW,COL作为符号,在game.h中进行声明,这样可以根据需要更改棋盘的长宽。
2025-08-19 22:55:52
171
原创 c语言学习_数组6
注意:整个数组的地址与首元素的地址看起来仍然是相同的,但是意义不一样,其地址占的内存是不同的。1.sizeof(数组名)表示整个数组,计算的是整个数组的大小,单位是字节。2.&数组名,数组名表示整个数组,取出的是整个数组的地址。数组作为函数的参数时,一般数组名是首元素的地址。今天学习数组作为函数的参数怎么使用。
2025-08-06 17:33:00
215
原创 c语言学习_数组5
二维数组的使用需要下标,二维数组的下标行列都是从0开始的。一行内部连续,跨行也是连续。二维数组在内存中的储存。今天继续学习二维数组。通过打印二维数组的地址。二维数组是连续存放的。
2025-08-04 17:59:34
363
原创 c语言学习_数组4
创建一个二维数组,如int arr[3][4];,指3行4列的二维数组,其中每个元素都是int类型。今天学习的是二维数组的创建和初始化。
2025-08-04 02:16:09
244
原创 c语言学习_数组2
注意数组的下标是从零开始的,如char arr[10];它的下标就是从0-9。最近有些懒惰,隔了好一段时间,今天继续学习数组。用下标引用操作符来引用数组。
2025-07-22 00:02:48
226
原创 c语言学习_数组
对数组进行初始化时,类似 int arr[10] = {1,2,3};为不完全初始化,类似 char ch[5] = { 1,2,3,4,5 };type_t 指数组的元素类型,const_n 是一个常量表达式,用来指定数组的大小。在c99语法中,const_n 处也可以是一个变量,称为变长数组,但一般而言都是常量。数组即一种相同类型元素的集合。
2025-07-11 18:45:55
296
原创 c语言学习_函数递归2
计算机的内存分为三部分,栈区、堆区、静态区。局部变量和函数形参分配在栈区,在函数运行时,会在栈区中开辟一块区域来存放它。而递归代码在运行时,每次调用它自身的时候都会在栈区开辟一块新区域。因此,如果递归代码层次太深,栈区存放不下,就会造成栈溢出错误。存在限制条件,当满足这个条件的时候,递归便不再继续。1.不能死递归,要有跳出条件,并且逼近跳出条件。每次递归调用之后越来越接近这个限制条件。2.递归层次不能太深,否则会造成栈溢出。今天继续学习函数递归。
2025-07-09 23:33:57
359
原创 c语言学习_函数的调用
这种传递方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操纵外部的变量。函数的形参和实参分别占有不同的内存块,对形参的修改不会影响到实参。是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。函数有两种调用方法,分别是传值调用和传址调用。
2025-07-03 18:08:08
457
原创 c语言学习_函数5
其中,swap(&a, &b);中的&a,&b是真实传递给函数的参数,像这种参数叫做函数的实际参数,也叫实参。而 void swap(int*pa, int*pb) 中的*pa,*pb是函数的形式参数,也叫形参。printf("交换前:a=%d b=%d\n", a, b);printf("交换后:a=%d b=%d\n", a, b);statement;举例,写一个可以交换两整型变量的值的函数。ret_type 返回类型。fun_name 函数名。para 1 函数参数。
2025-07-02 13:59:44
469
原创 c语言学习_初识c语言21
在经过“int *pa = &a” 将a的地址存储在pa中之后,此时再通过a的地址,即pa找到a的操作如“*pa = 20”,叫做解引用操作。取地址时,如取一个int的地址,只取它的起始地址,即第一个字节的地址,也就是说其地址的大小是一个字节。以“int *pa = &a” 为例,其中*说明pa是指针变量,int说明pa执行的对象是int类型。昨天说到在32位电脑中,一个内存单元是一个字节,然后分配地址,即每个字节都有一个地址。32位——32bit——4byte。64位——64bit——8byte。
2025-07-01 21:16:56
240
原创 c语言学习_初识c语言20
最近期末周太忙,都没时间学习c语言了。好不容易考完试了,赶紧再回来学习。今天主要是补充之前没弄懂的知识,指针。内存是电脑上特别重要的储存器, 计算机中所有程序的运行都是在內存中进行的。32 位1和0的所有组合, 每个组合可编一个号, 即有2的32次方个编号。计算机: 32位计算机—有32根地址线—物理线—通电—得到1/0二进制。由电信号转化成数字信息: 1和0组成的二进制序列。一个內存单至是一个字节, 然后分配地址。将这些编号称为內存单元的地址。2.一个內存单至是多大空间。1.内存是怎样编量的?
2025-07-01 00:02:58
246
原创 c语言学习_函数4
今天学习函数的调用,写了一个简单代码:int z = 0;if (x > y)z = x;elsez = y;return z;int main()int a = 10;int b = 20;return 0;
2025-06-15 20:10:59
335
原创 c语言学习_函数2
在C语言中,自定义函数是一种强大的工具,允许程序员封装代码以执行特定的任务。这些函数可以设计为接收输入参数并返回一个值,也可以不接收参数且不返回任何值。定义:自定义函数的定义包括返回类型、函数名称和参数列表。函数体内包含了实现特定功能的代码。
2025-06-12 20:28:04
473
原创 c语言学习_函数
定义:子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。一般会有输入参数并有返回值,提供过程的封装和细节的隐藏。这些代码通常被集成为软件库。库函数:为可移植性和提高程序效率,在基础库中提供了一些函数,方便程序员进行开发。推荐网址:www.cpulspuls.com。
2025-06-11 20:23:08
322
原创 c语言学习_循环语句5
今天继续做题:模拟用户登录场景,只允许登录三次,密码正确则提示成功,三次均输入错误则退出程序。printf("登录失败,请重新输入\n");printf("三次密码均输入错误,退出程序\n");printf("登陆成功\n");printf("请输入密码:>");
2025-06-10 22:51:35
364
原创 c语言学习_循环语句3
2.建议for语句循环控制变量的取值采用“前闭后开区间”写法。1.不可在for循环内修改循环变量,防止for循环失去控制。今天继续学习for语句。
2025-06-08 21:46:25
586
原创 c语言学习_循环语句
continue用于跳过本次循环continue后的代码,直接去判断部分,看是否进行下次循环。break用于永久的终止循环。今天学习了while循环。while(表达式)
2025-06-06 20:46:03
487
原创 c语言学习_分支语句3
当switch的表达式的值不匹配所有case标签的值时,default子句后的语句就会执行。switch中break的实际效果是把语句列表划分为不同部分。printf("输入错误\n");printf("工作日\n");printf("休息日\n");写在任何一个case标签可以出现的位置;今天继续学习switch语句。
2025-06-05 22:40:19
446
原创 c语言学习_分支语句2
printf("星期一\n");printf("星期二\n");printf("星期三\n");printf("星期四\n");printf("星期五\n");printf("星期六\n");printf("星期天\n");今天学习了switch语句。switch(整型表达式)
2025-06-04 22:53:32
312
原创 c语言学习_分支语句
今天学习了c语言中的分支语句,初步了解了if,和if else语句。在C语言中,if语句用于根据表达式的值来决定程序的分支流程。printf("未成年\n");printf("成年\n");
2025-06-03 19:28:17
273
原创 c语言学习_初识c语言19
是C语言中一种用户自定义的数据类型,它允许将不同类型的数据项组合在一起,形成一个整体。struct stu s = { "李四",20,90 };
2025-06-02 23:44:40
294
原创 c语言学习_初识c语言16
在C语言中,指针是一个非常重要的概念,它允许直接操作内存地址,从而提供了强大的功能和灵活性。指针本质上是一个变量,用于存储另一个变量的内存地址。通过指针,可以间接访问和操作这些变量的值。
2025-05-30 23:58:17
312
原创 c语言学习_初识c语言15
定义宏:带类似于函数,可以接受参数并进行替换。定义常量:将一个标识符替换为一个字符串。今天认识了define定义的常量和宏。define是一个预处理指令。
2025-05-29 21:35:56
725
原创 c语言学习_初识c语言14
修饰全局变量,使得全局变量只能在自己的源文件内部使用,本质是将全局变量的外部链接属性改变为内部链接属性。修饰函数,使得函数只能在自己的源文件内部使用,本质是将函数的外部链接属性改变为内部链接属性。修饰局部变量,改变了局部变量的生命周期,本质是改变了变量的储存类型。1.typedef 类型(重)定义,通俗来说就是重命名一个类型。2.static 静态的。
2025-05-28 23:27:18
312
原创 c语言学习_初识c语言13
auto 自动的-每个局部变量都是auto修饰的(一般省略)注:只能使用c语言提供的,不能自己创建关键字。今天认识了部分c语言中的常用关键字。extern 用来申明外部符号。register 寄存器关键字。
2025-05-27 21:01:57
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅