C语言实现简单的井字棋游戏
井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。 想必大家小时候都玩过井字棋,今天分享大家一个用C语言做简单的井字棋游戏的教程,通过井字棋游戏,既能回忆起童年的美好,也能熟悉简单的C语言语法. 游戏演示: 我们准备三个文件,分别为game.c,test.c,game.h game.c文件用来写实现游戏功能的各个函数代码,test.c文件写游戏的总流程,game.h文件用来声明函数和初始值. 先来看test.c文件 文件内有三个函数,分别为菜单,游戏,主函数. 1234567void menu(){ printf("-----------------------\n"); printf("--------1.开始游戏-----\n"); printf("--------2.退出游戏-----\n"); printf("-----------------------\n");} 菜单很简单,就是开...
【C语言】分支和循环语句常见问题
分支语句 if-else语句 12345678910111213#include <stdio.h>int main(){ int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hello\n"); else printf("panghu\n"); return 0;}//输出结果: 123456789101112131415#include <stdio.h>int main(){ int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hello\n"); else printf("胖虎\n"); else printf("panghu\n"); ...
【JavaSE】类和对象
类的成员:字段、方法、代码块、内部类和接口等 字段 1234class Person{ public int age; public String name; public String sex; age,name,sex这些类中方法外的变量,是字段、属性、成员变量(3种称呼均可) 123456789public class TestDemo { public static void main(String[] args) { //类的实例化 Person person=new Person(); System.out.println(person.name);//null System.out.println(person.age);//0 }} 对象的字段如果没有初始化,访问时会被设置成默认值。 默认值规则 对于各种数字类型, 默认值为 0. 对于 boolean 类型,默认值为 false. 对于引用类型(Str...
【JavaSE】数组的定义和使用
一维数组 一维数组的定义 123int[] arr={1,2,3,4,5}; //静态创建int[] arr1=new int[]{1,2,3,4,5}; //动态创建int[] arr2=new int[5]; 一维数组的遍历 method 1: 123for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]);} method 2: 123for (int x:arr) { System.out.print(x);} method 3: 1System.out.println(Arrays.toString(arr)); 理解引用 int[] arr=new int[]{1,2,3}创建一个数组,变量arr是一个引用类型,里面只保存了一个整数(数组的起始内存地址),指向{1,2,3}的存储地址。 引用,本质上就是存放了一个地址。当数组作为方法的参数时,其实是将数组的首地址...
【C语言】基础语法的简单概括
数据类型 为了更加丰富地表达生活中的各种值,C语言中有不同的数据类型。每个数据类型有其占用空间的大小。我们用sizeof可以获取某个数据类型所占用空间的字节数。 下面这段代码: 1234567printf("%d", sizeof(char));printf("%d", sizeof(short));printf("%d", sizeof(int));printf("%d", sizeof(long));printf("%d", sizeof(long long));printf("%d", sizeof(float));printf("%d", sizeof(double)); 在vs2019运行时,输出结果是:1244848 在linux平台运行时,结果是:1248848 对比发现,long在不同的编译器结果不同。c语言并没有规定long的大小,只是规定了sizeof(long)>=sizeof(int)。 变量的作用域和生命周期 ...
2021年度总结
2022年来了,我又长大了一岁。 过去这一年,有快乐有失落,有收获有遗憾。 伤感的话不再说,遗憾的事不再提,新的一年继续好好生活。 等等,在好好生活之前还是写一下年终总结吧,虽然今天已经是2022年…… 回顾过去的这一年,**每一天都很平常,有时很快乐,有时会难过,也许有成长,难免有遗憾。**就在这平凡的一天又一天中,平凡的我又长大了一岁。 我没有写日记的习惯,很多事过去了就过去了,也许以后就再也不会想起。比如现在我想写一个年度总结,我不知道写些什么。好在有这样一个博客,或多或少能留存一些当时的记忆。 2021年3月29日,新博客建成,发布第一篇博客: 新学期,新博客,新开始! 在此之前也搭建过其他博客,总是写着写着感觉没啥意思,最终都删库跑路了。这是我持续时间最长的博客,我会一直让它活下去(希望别被打脸)。 回看第一篇博客,感慨万千。当时写到“我想学计算机相关专业,但无奈被调剂到了应用物理”,现在我已经是计算机科学与技术专业的学生了,2021/9/17 收到了转专业成功的消息,这个可以算是今年很开心的一件事。当时我提到“一直对编程感兴趣,尤其是前端”,现在我已经俩月没...
【JavaSE】方法及递归的使用
初识方法 Java中的方法类似于c语言中的函数 观察下面代码,体会方法的好处。 123456789101112//求两个数的最大值public static int maxTwoNum(int a,int b) { return a>b ? a : b;}//求三个数的最大值public static int maxThreeNum(int a,int b,int c) { int max=maxTwoNum(a,b); return maxTwoNum(max,c);}public static void main(String[] args) { int a=10,b=23,c=4; System.out.println(maxThreeNum(a,b,c)); 灵活使用方法,可以减少重复代码,使代码更简单。 实参、形参的关系 Java当中只有按值传递 分析如下代码:交换两个整型变量 12345678910111213public static void swap(int x,int y)&...
【JavaSE】程序逻辑控制练习
输入1-7,输出工作日或休息日 1234567891011121314151617Scanner scan = new Scanner(System.in);switch(scan.nextInt()) { case 1: case 2: case 3: case 4: case 5: System.out.println("工作日"); break; case 6: case 7: System.out.println("休息日"); break; default: System.out.println("输入错误"); break;} switch 中的值只能是 整数|枚举|字符|字符串,long、double、float、boolean不能作为switch参数的类型。 判断一个数是否为素数(3种方法) 1234567891011121314Scanner sca...
【JavaSE】数据类型与运算符
初识Java 第一个java程序 12345public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld"); }} 一个java文件中,只能有一个public类,且类名要与文件相同。 类存在于源文件里面;方法存在于类中;语句存在于方法中。 类名要采用大驼峰形式(首字母均大写)命名。 面试问题: main方法为什么是static:main方法是程序的入口,如果不是静态的话,要启动就必须创建一个实例,但是main是程序入口,创建一个实例又得从main开始。如果一个方法不是静态的,则要先实例化该类,比如要这样 test t=new test(); 然后才能调用 t.main(); 而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为static,使t.main()可以直接被调用。 String[] args的作用是什么:运行时命令行...
c语言:指针误区总结
4个二进制位可以表示一个16进制数字 1111 -->f 指针类型的意义: 指针类型决定了:指针解引用的权限有多大(整型指针解引用访问4个字节,字符型指针解引用只能访问1个字节) 指针类型决定了,指针走一步,能走多远(步长) 例题1: 123456 int a = 0x11223344;char* pc = &a;*pc = 0; //只改变一个字节int* pa = &a;*pa = 0;//改变了四个字节 char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用能访问四个字节。 例题2: 1234567int arr[10] = { 0 };int* p = arr;char* pc = arr;printf("%p\n", p);printf("%p\n", p + 1);//加了4,因为int4字节printf("%p\n", pc);printf("%p\n", pc + 1);//加了1,因为char1字节 野指...