自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (2)
  • 收藏
  • 关注

原创 C语言-银行系统的简单实现(存钱,取钱,保存用户信息,销户,开户,转账,查询等功能,使用消息队列达到2个不同进程之间的相互通信)

主要分为两人大模块:客户端1、进入时的功能开户、销户、登录、解锁开户:输入姓名、身份证号、设置密码,如果开户成功,则服务器上保存一个账号信号(一个账号存一个文件,文件名建议是账号)。销户:输入帐号、密码,服务器询问是否确认销户,如果确认则服务器删除帐号文件,并记录帐号。登录:输入账号、密码,三次错误账号锁定。解锁:输入账号、身份证号解锁。2、登录成功:存钱、取钱、转账、查询、修改密码存钱:输入存钱金额取钱:输入取钱金额转账:目标帐号和要转的金额查询:不需要输入数据修改密码:原密码和新

2020-08-27 20:30:44 3500 3

原创 机房预约系统(c++案例)能够实现机房的预约与审核,教师,学生,管理员的登陆与信息的处理,读取和写入文件信息等功能

思维导图:(我是根据这个图做的,自己可能思路没这么清楚,这里建议大家写代码的时候也先进行构思,因为这是一个很好的习惯,写好思维导图之后,写代码按照功能一块一块填好就行了,这里用到了多态,容器,以及一些基本的c++功能,因为最近就在学这些,然后就实践一下,感觉c++的面对对象编程在思路上的确比c的面对过程编程要稍微显得清晰一些,嗯,可能分的块更加清晰了把。分文件的编写会让条理更加清晰。)所有文件如下:这里将管理员,教师和学生分为3个子类,父类是一个包含他们公共信息的identity类,可以将他们的共性

2020-07-01 14:21:04 1613 1

原创 C语言实例(成绩管理系统)可以实现学生和教师的登录,以及一些信息的修改和保存(较为完善)

有bug的话可以评论一下,嗯,我感觉一些输入的判断上可能还有些问题,非法输入判断可能不全面,其他的方面功能测试都可以,最开始的成绩信息要自己输入,我这里写的就一个教师 账号是:xiong 密码是:250。需要可以自行添加和修改,感觉我写的不好的大神轻点喷。。谢谢后面可能会优化一下。linux里面没有conio.h库,所以我用的是自己搞的getch.h库,代码放在最下面,需要的可以去拿。getch()是不放在缓冲区中,直接读取用户输入的第一个字符。/*学生成绩管理系统,分为教师界面和学生界面,教师界面需

2020-06-10 15:42:07 5763 2

原创 PAT(pat)乙级合级(全)C语言

pat乙级全部95道题,C语言第一遍刷都没用注释,后面刷会慢慢加上去的。感觉有用的可以收藏点个赞。感谢0.0,点击就可以跳转了。10011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038

2020-06-06 13:17:53 13582 9

原创 MySQL数据库学习笔记03(多表查询,取别名,分组查询,子查询,连接查询,约束,外键,标识列,索引,视图)

1、多表查询当需要查询的数据在多张表中,这种查询叫多表查询。select 字段 from 表1,表2 where 条件。注意:一定要where条件,否则会产生笛卡乐积。练习1:班级编号是2086的属于哪所学校,查出学校的名字。练习2:查询出每个班级的班主任的姓名,教授的课程。2、取别名给字段取别名,提高查询结果的可读性。select 字段 as 别名 from 表名;给表取别名,可以精简SQL语句。select 别名.字段 from 表名 as 别名;3、分组查询select 字段

2020-10-18 11:17:40 919

原创 MySQL数据库学习笔记02(事务控制,数据查询)

一、事务控制什么是事务控制:在操作数据时需要让有关系的数据进行联动(一起有效、无效)。注意:数据定义语句立即有效,不需要事务控制,只有数据操作语句才需要事务控制。1、commit提交 一个用户向表中插入一条记录,其它用户并不能立即查询到,只有执行提交命令才确定有效。 注意:MySQL数据库默认设置了自动提交 查看是否开启自动提交:show variables like 'autocommit'; 'autocommit', 'OFF' 关闭 'a

2020-10-18 11:14:19 357

原创 MySQL数据库学习笔记

一、数据库介绍1、为什么需要数据库内存掉电后数据丢失,计算机的资源有限,因此需要把程序中用的数据存储下来以便于关机后还能继续使用(数据持久化),而保存数据最简单的方法就是把数据以文件形式写入到磁盘中。 随着程序的功能越来越复杂,需要操作的数量也就是越来越来大,管理数据就成了很大的问题,因为读写文件并解析数据需要大量重复的操作,并且从大量数据的增、删、改、查需要非常复杂的逻辑和耗时的操作。 如果程序都各息实现读写数据的代码,一方面效率低、容易出错,另一方面是每个程序访问数据的接口、业务逻

2020-10-11 09:02:57 296

原创 ubuntu系统linux虚拟机安装MySQL步骤详解(附过程)

1、确保ubuntu系统的网络畅通在ubuntu系统关机状态下​ 方案一、设置-》网络-》连接方式-》网络地址转换(NAT)​ 方案二、设置-》网络-》连接方式-》桥接 选择正确的网卡2、更新软件源​ sudo apt-get update3、安装MySQL数据库软件​ sudo apt-get install mysql-server 安装MySQL数据库管理软件​ sudo apt-get install mysql-client 安装MySQL数据库客户端,用户访问数据库​

2020-10-07 21:41:31 2182

原创 ftp部分功能的实现(可以实现断点重传和断点续传)

仿照Linux系统下的ftp功能进行编写。main.c#include <stdio.h>#include <stdlib.h>#include <signal.h>#include "ftp_client.h"// 创建FTP客户端对象FTPClient* ftp = NULL;void sigint(int num){ if(ftp->is_get) { printf("------------------------\n");

2020-09-10 21:37:23 666

原创 线程池的简介及线程池封装

线程池:线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。线程池的伸缩性对性能有较大的影响。创建太多线程,将会浪费一定的资源,有些线程未被充分使用。销毁太多线程,将导致之后浪费时间再次创建它们。创建线程太慢,将会导致长时间的等待,性能变差。销毁线程太慢,导致其它线程资源饥饿。th

2020-09-08 09:38:33 226

原创 网络通信socket套接字函数封装

写网络通信的时候发现这个流程是差不多的不管是udp还是tcp通信都有很多地方是相同的,那么能不能把这些流程封装一下,下次再写的时候就可以节约很多的时间。所以代码如下:network.h#ifndef NETWORK_H#define NETWORK_H#include <stdio.h>#include <stdbool.h>#include <netinet/in.h>// 网络通信结构typedef struct NetWork{ int so

2020-09-07 17:25:35 286

原创 网络聊天室(TCP,多线程传输)实现

server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<pthread.h>#include<arpa/inet.h>#define MAX_BUF 50#define NAME 2

2020-09-04 15:03:51 520

原创 Linux环境编程6(持续更新中)

一、基本概念1、线程就是进程的进程路线,它是进程内部的控制序列,或者说它是进程的一部分(进程是一个资源单位,线程是的一部分负责真正的执行)。2、线程是轻量级的,没有自己独立的代码段、数据段、bss段、堆、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源。3、线程有自己独立的栈内存、线程ID、错误码、信号掩码等。4、一个进程中可以包含多个线程(多个执行路线),但至少有一个,这个线程要主线程,//默认情况下主线程结束其它线程会跟着一起结束。5、ps -T -p 或者使用htop命令查看

2020-09-04 14:57:30 171

原创 Linux环境编程5(持续更新中)

一、套接字基本特点:socket是一种接口技术,被抽象成一个文件操作,可以让进程之间通信,也可以让不同计算机的进程通信(网络)。int socket(int domain, int type, int protocol);功能:创建套接字domain: AF_UNIX/AF_LOCAL 本地通信,进程间通信 AF_INET 基于IPv4地址通信 AF_INET6 基于IPv6地址通信type: SOCK_STREAM 数据流协议 SOCK_DGRAM 数据

2020-09-01 21:41:03 122 1

原创 Linux环境编程4(持续更新中)

基本概念:什么是进程间通信:是指两个或多个进程之间交互数据的过程,因为进程之间是相互独立,为了协同工作必须交互数据。进程间通信的分类:简单的进程间通信:信号、文件、环境变量、命令行参数。传统的进程间通信:管道文件(有名管道、匿名管道)XSI进程间通信:共享内存、消息队列、信号量。网络进程间通信:套接字传统进程间通-管道管道是UNIX系统中最古老的进程间通信方式,古老就意味着所有系统都支持,早期的管道都是半双工,现在有些系统的管道是全双工(但要假定系统仅支持半双工)。管道是一种特殊的文件,它

2020-08-26 19:45:15 731

原创 Linux环境编程3(持续更新中)

基本概念1、中断当程序接收消息后中止当前正在执行的程序,转而执行其它任务,等其它任务执行完成后再返回,这种执行模式叫中断,分为硬件中断和软件中断。2、信号是一种软件中断,由操作系统发出,程序接收后会执行相应的操作。3、常见信号kill -l 显示所有信号SIGINT Ctrl+c 终止SIGQUIT Ctrl+\ 终止+coreSIGFPE 除0 终止+coreSIGSEGV 非常内存访问 终止+coreSIGKILL 终止信号 终止4

2020-08-25 20:08:57 919 2

原创 Linux环境编程2(持续更新中)

文件同步:1、在写入数据时内存与磁盘之间也有一个缓冲区,这种机制降低了磁盘读写次数,提高了读写的效率。2、但这种机制带来的后果就是磁盘中的数据与实写入的数据不匹配,系统提供了一个函数可以让缓冲区中的数据立即写入到磁盘。void sync(void);功能:把缓冲区中的数据同步到磁盘注意:并不等到数据同步完成后才返回,而是把缓冲区的数据加入到写入队列。int fsync(int fd);功能:把指定文件的内容从缓冲区同步到磁盘注意:会等到完全定稿磁盘才返回int fdatasync(int

2020-08-21 21:56:24 843 2

原创 Linux环境编程(持续更新中)

UNIX系统介绍:最早版于1970年问世于贝尔实验室,作者是丹尼斯.里奇和肯.汤普逊。是最早的多用户、多任务、支持多种CPU架构,高安全性、高稳定性、高可靠性。既能构架大型关键性业务系统的商用服务器,也能支持嵌入式设备。MiniX基于微内核加载的类UNIX系统,名为MINIX(即小型的UNIX),并开放全部源代码给大学教学和研究工作,Linux之父林纳克斯,正是在受了MiniX的启发,才开发了Linux系统。Linux系统介绍:Linux,全称GNU/Linux,其内核由林纳斯・托瓦兹于1991

2020-08-20 21:22:07 960 1

原创 查找算法和排序算法(顺序查找,二分查找,块查找,哈希查找,冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)

算法的时间复杂度并不能代表算法的实际执行时间,有些时候看似复杂度高的速度反面快。查找算法:顺序查找:对待查找的数据没有要求,时间复杂度: O(n)二分查找:对待查找的数据必须有序,时间复杂度: O(logn)块查找:是一种数据处理的思想,不是特定的算法,当数据量过多时,可以先把数据进行分块处理,然后再进行查找,例如英语词典。哈希查找:数据 经过哈希函数 计算出数据在哈希表中的位置,然后标记,方便之后的查找,它的时间复试度最快能达到:O(1)。但是该算法有很大局限性,不适合浮点型、字符串型

2020-08-17 21:43:08 486

原创 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)

一、什么是数据结构1、数据结构的起源1968年,美国的高纳德教授开设了一门基本算法的课程,开创了数据结构的先河。数据结构是一门研究数据之间关系和操作的学科,而非是计算方法。数据结构+算法=程序 沃思凭借这名个论点,获得图灵奖,这句话展示出了程序的本质。2、数据结构的基本概念数据:所有能够输入到计算机中去描述事物的符号。数据项:有独立含义的数据最小单位,也叫域。数据元素:数据的基本单位也叫节点、记录。数据结构:数据元素和数据关系的集合。算法:数据结构所具备的功能,解决特定的问题的方法。3

2020-08-16 19:29:18 6547 2

原创 [剑指Offer]字符流中第一个不重复的字符--数组中重复的数--把字符串转换成整数--不用加减乘除做加法--求1+2+3+...+n

字符流中第一个不重复的字符class Solution{public: int str[128]; queue<char> myQueue; //Insert one char from stringstream void Insert(char ch) { str[ch-'\0']++; if(1==str[ch-'\0']) { myQueue.push(ch);

2020-07-26 10:33:52 159

原创 输出缓冲区和输入缓冲区

输出缓冲区:程序输入的数据并不能立即显示在屏幕上,而是先存储在输出缓冲区中,满足一些条件后才显示出来。1、遇到\n后2、遇到输入语句3、当输出缓冲区满4K4、当程序结束5、手动刷新 fflsuh(stdout)缓冲区机制可以提高数据的读写速度。输入缓冲区:程序并不立即获取到屏幕上输入的数据,而按下回车键后程序才从输入缓冲区中读取数据。1、当读取整型或浮点型数据时,而缓冲区中的数据是字母或符号,此时将读取失败,并且会影响接收下来所有的数据读取。2、fgets可以指定读取size-1字符,

2020-07-23 13:47:09 1925 1

原创 [剑指Offer]二叉搜索树的第k个节点--把二叉树打印成多行--对称的二叉树--二叉树的下一个节点--删除链表中的重复节点

[剑指Offer]二叉搜索树的第k个节点/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int index=0; TreeNode* KthNode(Tr

2020-07-19 12:21:23 144

原创 指针的使用(空指针 野指针 指针数组 数组指针 二级指针 指针函数)

什么是指针:指针是一种数据类型,使用它可以用来定义指针变量,指针变量中存储的其实是整数,这种整数代表了内存的编号。为什么要使用指针:1、函数之间相独立,但有些时候需要共享变量。传参是值传递全局变量容易命名冲突使用数组还需要传递长度命名空间是独立的,但地址空间是同一个,所有指针可以解决这个问题。2、由于函数之间传参是值传递(内存拷贝),对于字节数比较多的变量,值传递效率较低,如果传递变量的地址只需要传递4|8字节。3、堆内存无法取名字,它不能像data、bss、stack让变量名与内存建立联

2020-07-17 20:52:40 387

原创 [剑指offer] 数字在排序数组中出现的次数

方法一:遍历(遇到k开始计数,遇到不是k并且计数器有值的break即可)class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int count=0; for(std::vector<int>::iterator it=data.begin();it!=data.end();it++) { if(*it==k)

2020-07-16 19:58:48 100

原创 [剑指Offer]二叉树的深度

(递归)如果左或者右节点不为空就向下遍历树找到最大深度即可。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int TreeDepth(TreeNode* pRoot) { if(pRoo

2020-07-16 19:00:21 121

原创 C语言小案例(五子棋实现)

这里getch库我依旧放在下面有需要的可以提取/*五子棋*/#include <stdio.h>#include <stdlib.h>#include <getch.h>//获取用户输入的库#include <stdbool.h>//bool库void show_chessboard();//显示棋盘int is_legal(int x,int y,int number);//判断位置是否合法int is_win();//判断是否胜利

2020-07-16 15:56:03 363 1

原创 递归的实现(小案例)以及递归的优缺点的总结 斐波那契数列 汉诺塔问题 0-9全排列

递归是什么递归可以实现分治这种算法,就是把一个复杂的大问题,分解成若干个相同的小分问题,直到问题全部解决。递归案例斐波那契数列#include<stdio.h>int get_fibonacci(int number){ //第一个和第二个斐波那契数列值为1 if( 1==number || 2==number ) { return 1; } //第三项开始的斐波那契数列是前2项的和 else {

2020-07-15 21:05:20 586

原创 QT学习笔记(持续更新)

QT是跨平台C++图形用户界面应用程序开发框架。项目名称和路径不能有中文默认的三个基类 QWidget QMainWindow QDialog默认创建的文件 .pro工程文件 main.cpp入口函数 自己新建的.cpp和.h文件.proQT +=core gui //QT包含的模块greaterThan(QT_MAJOR_VERSION, 4):QT += widgets//4版本以上加入widgetTARGET = 01_QtFirst //目标 生成的.exe程序名称TEMPLAT

2020-07-04 08:45:57 361 1

原创 C++学习笔记(day6)(函数对象和一些算法)

STL函数对象概念:重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象的使用:特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递谓词返回bool类型的仿函数称为谓词如果operator()接收一个参数,那么叫做一元谓词如果operator()接收两个参数,那么叫做二元谓词举例:(一元谓词

2020-07-01 14:24:03 1120

原创 C++学习笔记(day5)持续更新中(STL所有容器完结)

vector容器功能:vector数据结构和数组非常相似,也称为单端数组vetcor与普通数组的区别:不同之处子啊与数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器vector构造函数:创建vector容器vector v;//采用模板实现类实现,默认构造函数vector[v.begin(),v.end());//将v[begin(),end()]区间中的元

2020-06-29 20:19:42 243

原创 C++学习笔记(day4)持续更新中

STL1.STL诞生长久以来,软件界一直希望建立一种可重复利用的东西c++的面对对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL2.STL基本概念STL(standard Tempalte Library)标准库模板STL从广义上分为:容器 算法 迭代器容器和算法之间通过迭代器无缝连接STL几乎所有的代码都采用了模板类或者模板函数3.STL六大组件STL大体分为六大组件,分别是:

2020-06-28 19:23:42 163

原创 C++学习笔记(day3)持续更新中

运算符重载可以利用局部函数和全局函数进行运算符+的重载只能利用全局函数进行左移运算符的重载cout的数据类型是ostream继承的好处:减少重复代码语法:class 子类:继承方式 父类子类页称为派生类 父类也称为基类派生类的成员包含基类继承过来的和自己增加的成员(体现了共性和个性)父类中的私有内容 子类不能继承公共继承父类中的保护内容和公共内容原封不动的继承给子类保护继承 公共的内容会变为保护内容传给子类私有继承 公共和保护的内容都会变成私有的传给子类父类中所以非静态的成员属性都会

2020-06-28 14:04:50 159

原创 C++学习笔记(day2)持续更新中

面向对象:objected-oriented programmingC语言是一系列函数描述程序的工作过程,称为面向过程。c++把程序里面的数据和对数据的操作合起来看作一个实体(称为对象),编程工作就是操纵这些对象相互作用来完成程序的功能,这样的编程方式称为面向对象编程抽象:每个实体都有很多的数据和行为,只提取关心的数据和行为封装:用抽象的结果来描述实体的类型,称为封装。在c++中,可以用结构来实现封装,但出于跟c语言兼容,一般在c++中结构也只封装数据,用class关键字来实现真正的封装,称为类。封

2020-06-21 18:56:24 170

原创 C++学习笔记(day1)持续更新中

c和c++的一些输入输出以及一些定义上面的区别gcc hello.cpp -lstdc++ 链接c++库hello.cpp#include<iostream>int main{ std::cout<<"hello world\n"; return 0;}可以使用c语言的头文件前面加c去掉.h stdio.h==》cstdio名字空间:标准库中的所有名字都放在一个叫std的名字空间中,使用时要加std::前缀。偷懒的办法是用 using namesp

2020-06-19 22:25:19 206

原创 《C Primer Plus》学习笔记(第十一章到第十二章)

第十一章:字符串和字符串函数字符串是以空字符(\0)结尾的char类型数组。puts()函数只显示字符串,而且自动在显示的字符串末尾加上换行符。用双引号括起来的内容称为字符串字面量,也叫做字符常量。用单引号括起来的内容是一个字符。字符串常量属于静态存储类别。定义字符串数组时,必须要让编译器知道需要多少空间。要多一位存储‘\0’。可以在初始化的时候让编译器计算数组的大小。字符串的字面量被视为const数据(类似常量)。如果不修改字符串,不要用指针指向字符串字面量。通常,程序要完成某项操作只

2020-06-19 15:36:38 245

原创 C语言小游戏(猜数字)

哈哈哈,很简单的一个小游戏,有兴趣的可以玩一下(虽然很low)。用rand和srand和time库来获取随机数。/*猜数字小游戏*/#include<stdio.h>#include<stdlib.h>#include<time.h>int main(){ int number=0,count=0,i_s_number=0,min=0,max=100; srand((unsigned) time(NULL)); number=rand()%100;

2020-06-15 16:35:39 282 2

原创 《C Primer Plus》学习笔记(第九章到第十章)

第九章:函数函数是完成特定任务的独立程序代码单元,使用函数可以省去编写重复代码的苦差。如果程序要多次完成某项任务,用函数会方便很多。函数让程序更加模块化,从而提高了代码的可读性,更方便后期的修改、完善。描述性的函数名能清楚的表达函数的用途和组织结构。然后单独设计和测试每个函数,直到函数都能正常完成任务。在动手编写代码之前,仔细考虑一下函数应该完成什么任务,以及函数和程序整体的关系。函数原型告诉编译器函数的类型,函数调用表明在此处执行函数;函数定义明确的指定了函数要做什么,任何程序在使用函数之前都要声明

2020-06-09 18:33:47 212

原创 C语言小程序(电话簿)小案例

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<getch.h>typedef struct people{ char name[20]; char sex; char relation[10]; char tel[20];}people;people* p;enum {ADD='1',DEL='2',LIS='3',QUIT='q',FIND='4'};

2020-06-09 08:59:12 371

原创 《C Primer Plus》学习笔记(第七章到第八章)

第七章:C控制语句:分支和跳转分支结构:让程序根据测试条件执行相应的行为跳转语句:它将程序流转换到程序的其他部分1.if语句即使if语句由复合语句构成,整个if语句仍被视为一条语句。条件为真则执行语句内的内容,为假则跳过if,继续执行程序。如果要在if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。如果不括则只认为下一条指令是if或else的一部分。if只和最近的一个else配对。else if多重选择 可以配合if使用2.getchar()和putchar()getc

2020-06-06 22:56:54 224

game2048_v2.zip

《2048》一款益智小游戏,游戏的规则十分简单,是时下一款简单易上手的数字小游戏,但又十分虐心。下面是游戏鸟小编就为大家整理的一些关于2048游戏高分攻略技巧。 游戏规则: 游戏的规则很简单,你需要控制所有方块向同一个方向运动,两个相同数字方块撞在一起之后合并成为他们的和,每次操作之后会随机生成一个2或者4,最终得到一个“2048”的方块就算胜利了。 技巧解析: 1、简单点来说就是尽量不要向上滑动就可以了。先得到较大的数放在右下角。例如第四行2-2-4-32。两次想右滑动得到8-32。然后在上面肯定得到了2或4,向左滑动,放到左边,然后向下滑动,麻烦点的例如得到4-2-8-32。此时需要考虑的就是在第三行第二个位置得到1个2,然后向下合并再向右合并就可以得到16-32了。同理,这样循环,小数不断积累得到更大的数。步骤越来越多而已。 2、数越来越大以后,较大的数要依次靠着这个,如图64-128-256-512。(如果是256-64-256-512就难度很大了)按向右递增的规律,这样如果在上面一行产生出一个64在64的上面,即可按下将64合为128,不断按右产生新的最大的数1024。然后同理,再产生512紧贴1024,256紧贴512。 3、因为尽量不向上滑动,所以大的数必然在底下,靠大家自己的头脑稍微判断下,基本不会出太大的问题就可以达到这样效果。因为还想靠在右下角,所有还要谨慎向左滑动,要产生所需要的数,最好先将最后一行填满,譬如2-2-256-512也可以,这样第三行左右下就可以随意的滑动了, 产生所需要的数按下合并即可。 总结: 总的来说游戏玩法游规则很简单,就是把方块合并,合并的办法是其中一个数字靠边的时候,将另一个数字向四个方向的墙推过去。2和2可以合并成4,4和4合并成8,直至合成到2048,虽然看似简单,但是根本停不下啊。

2020-07-24

C语言基础(思维导图).zip

C语言基础总结(编译器、数据类型、变量、运算符、流程控制、数组、进制转换、原码反码补码、函数、变量的分类、进程映像、类型限定符、指针)

2020-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除