自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 来自一个菜鸟的QT学习笔记(6)QT程序-键盘、鼠标事件

来自一个菜鸟的QT学习笔记QT程序-键盘、鼠标事件**## 一、鼠标事件**1.新建Qt Gui应用,项目名称为 myEvent ,基类更改为 QWidget ,类名为 Widget 。2.完成项目创建后,在设计模式向界面上拖入一个 Push Button 。3.在 widget.h 文件添加鼠标按下事件处理函数声明:protected:void mousePressEvent(QMouseEvent *);4.到 widget.cpp 文件中先添加头文件包含:#include 然后

2020-06-17 10:07:01 327

原创 来自一个菜鸟的QT学习笔记(5)QT程序-添加菜单图标

来自一个菜鸟的QT学习笔记QT程序-添加菜单图标一、添加主窗口菜单1.新建Qt Gui应用,项目名称为 myMainWindow ,基类选择 QMainWindow ,类名为 MainWindow 。2.创建完项目后,打开 mainwindow.ui 文件进入设计模式。在这里可以看到界面左上角的“在这里输入”,我们可以在这里添加菜单。双击“在这里输入”,将其更改为“文件( &F )”,然后按下回车键,效果如下图所示。这里的 &F 表明将菜单的快捷键设置为了Alt+ F,可以看到,实际

2020-06-15 09:22:27 450

原创 来自一个菜鸟的QT学习笔记(4)QT程序-登录框

来自一个菜鸟的QT学习笔记QT程序-登录框创建项目名称命名为Login(这个命名无所谓自己知道就好),路径默认的就可以,点击下一步。基类选择MainWindow和QMainWindow,至于区别,上一小节已经介绍过了。完成项目创建后,向项目中添加新的Qt设计师界面类,(找到左下角的项目单击右键)。模板选择Dialog without Buttons,类名更改为Dialog。完成后向界面上添加两个标签Label、两个行编辑器Line Edit和两个按钮Push Button,设计界面如下图所示。

2020-06-12 10:29:42 389

原创 来自一个菜鸟的QT学习笔记(3)QT程序-按钮

来自一个菜鸟的QT学习笔记QT程序-按钮前一小节我们简单的介绍了一个小小的QT的程序,这一节我们来介绍下一个QT程-按钮。第一步建项目,命名为Button这里选择类,我们选择Dialog,有人可能有疑问,这里的三个基类有什么区别,这里我就做一个简单的介绍:1.QMainWindow:QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜

2020-06-11 09:46:06 488

原创 来自一个菜鸟的QT学习笔记(2)Hello QT

来自一个菜鸟的QT学习笔记QT CreatorQt Creator是一个IDE,类似于VS,理论上,也可以使用其他IDE来开发Qt程序。打开QtCreator之后,会出现下面这个界面二、创建自己的第一个Qt项目点击“New Project”依次点击“Application”→“Qt Widgets Application”→“Choose…”。“Qt Widgets Application”是有UI的程序,“Widgets”暂且可以理解为UI。“Qt Console Application”是控制

2020-06-10 12:35:14 488

原创 来自一个菜鸟的QT学习笔记(1)QT的安装

来自一个菜鸟的QT学习笔记QT的安装许多人在想要学习QT的时候不知道该从哪里入手,安装什么样的工具,今天我就带大家介绍一个最简单的安装QT的一个开发工具。下载地址http://download.qt.io/official_releases/qt/进入QT官网找最新版本的下载安装即可。有windows和linux的都可以下载。看你自己的需求。我下载的是 qt-opensource-windows-x86-5.14.2.exe,在windows下的。安装一路下一步就好了。...

2020-06-10 11:30:11 352

原创 socket通信原理

对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问: 什么是TCP/IP、UDP? Socket在哪里呢? Socket是什么呢? 你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Inter...

2019-10-25 12:11:10 142

原创 端口详细解析

端口详解编辑端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的,他需要接受一些指令,并且要按照指令调整系统功能来工作,于是系统程序设计者,就把这个圆圈截成好多段,这些线段接口就叫端口(通俗讲是断口,就是中断),系统运行到这些端口时,一看端口是否打开或关...

2019-10-25 10:45:38 1061 1

原创 物理(MAC)地址与IP地址详细解析

在教计算机网络课程中,经常会碰到这样的问题,为什么需要两个地址:一个是MAC(物理地址),另一个是IP地址。各种解释都有,基本上一个观点就是一个是物理地址,一个是逻辑地址。然而,这样的解释太抽象,什么是物理,什么是逻辑。这些抽象的表述会让人无法理解到其本质。下面我就谈谈这个问题。要想说明这个问题,首先得说说计算机网络的目标是什么。计算机网络的根本目标就是将数据从一点传送到另外一点。听起来很简单,...

2019-10-25 10:10:35 4391

原创 僵尸进程

当我刚开始接触接触僵尸进程和孤儿进程的时候,我一直搞不清楚二者到底是什么区别。我相信对于很多刚接触进程的学生来说是和我一样的,不理解僵尸进程和孤儿进程的概念。现在我就按照我的理解给大家简单的叙述一下,希望对大家能够有所帮助。我理解的孤儿进程就是父进程死了之后所剩下的子进程。大家想象一下对于孤儿我们通常会怎么样?当然是送进孤儿院了,我们这里的1号进程,也就是大多数系统下的init进程,就相当于这个...

2019-10-12 16:55:37 110

原创 exec函数系列解析

fork生成的子进程和父进程的功能一样,如果想让fork生成的子进程的功能不一样,即拥有与父进程不一样的代码段数据段以及堆栈段,应该怎么办呢使用exec函数系列fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法所需头文件: #include <unistd.h>函数说明:...

2019-10-12 14:56:33 255

原创 lsof相关用法

#3565号进程使用的描述符sudo ls /proc/3565/fd一般默认情况下都是 0 1 2 3查看程序运行相关的信息sudo ls /proc会发现能够查看到3565进程号kill -9 进程号 是将一个进程杀死 再次使用sudo ls /proc该3565进程已经没有了...

2019-10-10 16:09:01 94

原创 linux下的那个男人,由英文转换中文的man手册方法!

我刚刚接触linux系统的,对于刚接触的linux的人来说里面来说首先你就得学会很多的命令,不仅繁琐,而且极易起来很不方便。今天我在这儿给大家分享一个linux中的一个帮助手册 man我相信大家对这个并不会感到陌生,只要接触了linux我相信大家应该都会知道这个东西——man。但是大家知道并不是会经常的去用它,至于为什么,因为你看不懂,当你要知道一个命令一个的语法规则和用法的时候,比如man...

2019-09-26 15:29:48 592 1

原创 拷贝构造函数,默认拷贝构造函数

拷贝构造函数,默认拷贝构造函数1.c++的默认拷贝构造函数,从深度拷贝和浅拷贝说起c++类的默认拷贝构造函数的弊端c++类的中有两个特殊的构造函数,(1)无参构造函数,(2)拷贝构造函数。它们的特殊之处在于:(1)当类中没有定义任何构造函数时,编译器会默认提供一个无参构造函数且其函数体为空;(2)当类中没有定义拷贝构造函数时,编译器会默认提供一个拷贝构造函数,进行成员变量之间的拷贝。(...

2019-09-20 18:05:52 2601

原创 数据结构中的栈

数据结构(三)–栈通常程序开发中内存管理是非常重要的,而内存主要分为占内存和堆内存。那么栈和堆内存有什么区别呢?希望在这篇文章里能带你找到答案!栈和堆的引入在一个简单的程序中我们定义和声明几个基本类型的变量、结构体和数组,先来直观看一下栈和堆的不同:静态变量 和 局部变量是以压栈出栈的方式分配内存的,系统会在一个代码段中分配和回收局部变量,实际上每个代码段、函数都是一个或多个嵌套的栈,...

2019-09-07 18:41:26 174

原创 *ptr2 = (int *)((int)a + 1);

我今天描述的问题就是怎么去理解这个(int *)((int)a + 1);在描述这个问题的时候你们要先看下面这一段代码;知道 这其中的a表示的是a首元素的地址,那么(int)a呢?自然也是地址,并且和a是一样的。那么(int)a+1呢?自然就是地址加1了。这里可能有人会问了,地址加1不就是下一个元素的地址吗?你们可以上机调试一下这个真不是下一个元素的地址,这个(int)a+1这里的这个+1加的其实...

2019-08-16 12:47:14 673

原创 有一个班四个学生,5门课程。①求第一门课程的平均分;②找出有两门及以上课程不及格的学生,输出他们的学号和全部课程及平均成绩;③找出平均成绩在90分以上或者全部课程在8分以上的学生。分别编写3和函数。

#include<stdio.h>void avg1(float (* p)[5]){float sum = 0,aver1;for (int i = 0; i < 4; i++){sum = sum + ((p + i) );//及第一门课程的分数之和}aver1 = sum / 4.0;printf(“第一门的平均成绩为:%5.1lf”, aver1);p...

2019-08-06 18:11:37 7450

原创 输入一个字符串,内有数字和非数字字符,例如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,一次存放到一个数组中。

输入一个字符串,内有数字和非数字字符,例如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,一次存放到一个数组中。#include <stdio.h>int main(){void search(char * parr, int * pnum);char arr[100], *parr;int num[30], *pnum;...

2019-08-05 18:44:10 4767

原创 有n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。写一函数实现以上功能,在主函数中能够输入n个整数和输出调整后的n个数。

有n个数,使前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。写一函数实现以上功能,在主函数中能够输入n个整数和输出调整后的n个数。void S(int *arr, int m){int tmp = 0;for (int i = 0; i <10 - m; ++i)//由m确定移动次数{tmp = arr[9];for (int j = 9; j>0; --j)//...

2019-08-02 08:25:01 223

原创 查找数列中的最小的数和最大的数,将最小的和第一个交换,最大的和最后一个交换。

定义三个函数,一个函数输入十个数,一个函数实现交换,一个函数为输出函数。查找数列中的最小的数和最大的数,将最小的和第一个交换,最大的和最后一个交换。#include<stdio.h>void input(int *a){for (int i = 0; i < 10; ++i){scanf("%d", &a[i]);}}void f(int *c){...

2019-08-01 21:00:31 1367

原创 在一个数组中查找指定的位置按照逆序输出。

设有一数列,包含10个数,已按升序排好。现要求编一程序,它能够把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。int R_order(int a[10],int n)//定义一个求逆序的函数{int t;for (int i = 0; i <=(10-n)/2; i++)//查找位置然后按照逆序输出,思想就是运用冒泡法。{t = a[n -1+i];a[n-1+i...

2019-07-30 19:17:45 742

hongqi.cpp

这个是国旗的代码,在vs大环境下运行的,很标准。

2019-07-24

游戏.sln一个游戏的代码类鞥看懂的就看看吧

#include <graphics.h> // 引用图形库头文件 #include <conio.h> #include<time.h> #if 0 int main1() { initgraph(640, 480); MOUSEMSG m; int r;// 创建绘图窗口,大小为 640x480 像素 while (1) { m = GetMouseMsg(); switch (m.uMsg) { case WM_MOUSEMOVE: setcolor(RGB(rand() % 91 + 10, rand() % 91 + 10, rand() % 91 + 10)); if (m.mkLButton) { circle(m.x, m.y, rand() % 91 + 10); break; } else if (m.mkRButton) { r = rand() % 91 + 10; rectangle(m.x - r, m.y - r, m.x + r, m.y + r); } } } _getch(); // 按任意键继续 closegraph(); // 关闭绘图窗口 } const int BoardW = 5; const int BoardH = 5; const int GridSz = 100; const int Edge = 30; void drawGrid() { setbkcolor(RGB(0, 162, 232));//背景颜色 cleardevice();//用当前背景颜色全涂色 setcolor(RGB(0, 0, 0));//边框用黑线 for (int i = 0; i <= BoardH; ++i) { line(Edge, Edge + i*GridSz, Edge + BoardW*GridSz, Edge + i*GridSz); } for (int i = 0; i <= BoardH; ++i) { line(Edge + i*GridSz, Edge, Edge + i*GridSz, Edge + BoardH*GridSz); } } void drawLayout(int layout[BoardH][BoardW]) { int r = GridSz * 4 / 10; int x, y; setcolor(RGB(255, 201, 14));//棋子边的颜色 setfillcolor(RGB(255, 201, 14));//棋子的填充色 for (int i = 0; i<BoardH; i++) { for (int j = 0; j<BoardW; j++) { if (1 == layout[i][j]) { x = Edge + j*GridSz + GridSz / 2; y = Edge + i*GridSz + GridSz / 2; fillcircle(x, y, r); } } } } void UpdateLayout(int Layout[BoardH][BoardW], int x, int y) { if (x <= Edge || x >= Edge + BoardW*GridSz || y <= Edge || y >= Edge + BoardH*GridSz) { return; } int i, j; i = (y - Edge) / GridSz; j = (x - Edge) / GridSz; Layout[i][j] = 1 - Layout[i][j]; if (i - 1 >= 0) { Layout[i - 1][j] = 1 - Layout[i - 1][j]; } if (i + 1 < BoardH) { Layout[i + 1][j] = 1 - Layout[i + 1][j]; } if (j - 1 >= 0) { Layout[i][j - 1] = 1 - Layout[i][j - 1]; } if (j + 1 < BoardW) { Layout[i][j + 1] = 1 - Layout[i][j + 1]; } } int isGameOver(int layout[BoardH][BoardW]) { int sum = 0; for (int i = 0; i < BoardH; i++) { for (int j = 0; j<BoardW; j++) { sum += layout[i][j]; } } if (0 == sum) { return 1; } else { return 0; } } int initLayout(int layout[BoardH][BoardW]) { int k = 0; srand((int)time(0)); for (int i = 0; i<BoardH; i++) { for (int j = 0; j<BoardW; j++) { k = rand() % 5; if (0 == k || 1 == k) { layout[i][j] = k; } } } return layout[BoardH][BoardW]; } int main() { int layout[BoardH][BoardW] = { 0 };//layout 布局 (棋盘的布局) HWND hwnd; hwnd = initgraph(BoardW*GridSz + 2 * Edge, BoardH*GridSz + 2 * Edge); while (1) { initLayout(layout); drawGrid();//画棋盘 drawLayout(layout);//画棋盘布局 MOUSEMSG m; while (!isGameOver(layout)) { m = GetMouseMsg(); switch (m.uMsg) { case WM_LBUTTONDOWN: UpdateLayout(layout, m.x, m.y); break; } drawGrid();//画棋盘 drawLayout(layout);//画棋盘布局 } MessageBox(hwnd, _T("恭喜过关!"), _T("提示"), MB_OK); } _getch(); closegraph(); return 0; } #endif //贴图 #if 0 int main() { initgraph(640, 480); IMAGE imgMask, imgSrc; loadimage(&imgMask;, _T("./mask.jpg")); loadimage(&imgSrc;, _T("./src.jpg")); putimage(100, 200, &imgMask;, SRCAND); putimage(100, 200, &imgSrc;, SRCPAINT); _getch(); closegraph(); return 0; } #endif //时间及文本显示 #if 0 int main() { initgraph(640, 480); time_t start, end; time(&start;); _getch(); time(&end;); TCHAR s[128]; _stprintf(s, _T("相隔时间:%d秒"), (end - start)); settextcolor(RGB(255, 255, 0)); settextstyle(100, 0, _T("隶书")); outtextxy(0, 0, s); _getch(); closegraph(); return 0; } #endif //声音播放 #if 0 #include"mmsystem.h" #pragma comment(lib,"winmm.lib") int main() { mciSendString(_T("open BGM.mp3 alias bgm"), NULL, 0, NULL); mciSendString(_T("open 123.mp3 123 bgm"), NULL, 0, NULL); while (1) { char key = _getch(); switch (key) { case 'p': mciSendString(_T("seek bgm to 0"), NULL, 0, NULL); mciSendString(_T("play bgm"), NULL, 0, NULL); break; //case 's': // mciSendString(_T("stop bgm"), NULL, 0, NULL); // break; case 't': mciSendString(_T("pause bgm"), NULL, 0, NULL); break; case 'r': mciSendString(_T("resume bgm"), NULL, 0, NULL); break; case 'c': goto lp; break; case 'o': mciSendString(_T("play 123"), NULL, 0, NULL); break; } } lp: mciSendString(_T("close bgm"), NULL, 0, NULL); return 0; } #endif #if 0 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL));//1970.1.1 00:00:00 for (int i = 0; i < 10; ++i) { printf("%d,", rand()); } return 0; } /* 伪随机 */ #endif

2019-07-24

空空如也

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

TA关注的人

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