自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 插入排序

插入排序最主要的两点1、拿出一个元素,留出空位,2、符合条件的元素往后移假设有一个int类型的数组中有这样几个没有顺序的数字 5,3,4,1, 2。首先将下标为1也就是3这个数拿出来,保存到一个temp中,这样3的位置就有了一个空位。然后就是把这个空位之前的数字都和temp比较如果,有数字大于temp,就将这个数字往后移,等到这轮比较结束之后就将temp插入到空位中。第一轮...

2018-08-15 15:13:55 272 1

原创 单链表的基本操作

学过数据结构都知道,链表是最基础的一个数据结构。作为一个合格的程序员都应该清楚链表的操作。一、什么是链表呢?我的理解是,链表是有每个结点的组成的一种线性表,每个结点的物理存储单元是不连续的,但是这些结点能通过指针找到下一个结点的位置。结点是什么呢?我来画一个图解释一下。每个结点都是由数据域和指针域组成的,数据域中存放个的是这个结点的一些信息,指针域存放的是下一个结点的地址,这个...

2018-08-12 15:27:49 1244

原创 C语言和C++中const的区别

首先来看一个例子:在C语言编译器和C++编译器中编译这段代码,看最后输出的结果。int a = 10;const *p = &a;*p = 20;printf("a = %d\n", a);在C中运行的结果a = 20在C++中运行的结果a = 10为什么会导致在结果不同呢?因为两者对const的处理机制不同。C语言中对const的处理是这样的...

2018-08-11 23:10:10 595

原创 C语言和C++中三目运算符的区别

浅谈在C和C++中三目运算符的区别:C语言中唯一的三目运算符由 ? :组成它的一般形式: 表达式1 ? 表达式2 : 表达式3;如果表达式1的值为真,那么就返回表达式的值,否则返回表达式二的值。【注意】:在c语言中表达式返回的是一个数值。如果尝试给这个表达式赋值,那么编译就会报错。因为返回的是一个值,如果对这个值赋值,就相当于给一个常数赋值 10 = 40;这样肯定是有问题的。...

2018-08-11 15:48:38 838

原创 LinuxC——指针

指针在C语言中的应用是非常多的,而且也是很重要的。一、什么是指针指针是一个值为内存地址的变量。就像char类型变量的值为字符,int类型变量的值为整数。在使用指针的时候,一定会用到这两个符号‘*’和 ‘&’,下面就首先介绍这两个运算符间接运算符*这个运算符也被称为解引用运算符,我们通过间接运算符找出存储在指针指向的某个内存中的值。我们用一个例子来说明ptr = &bah;var ...

2018-06-30 18:07:13 1201 2

原创 LinuxC——数组

本篇博客来介绍一下数组的相关知识。一、什么是数组数组是由数据类型相同的一系列元素组成。

2018-06-29 21:08:52 651

原创 TCP程序客户端连接不上服务器的解决办法

这几天突然想运行之前用Qt写的几个tcp小程序,但是发现客户端和服务器连接不上了,我自己又写了一遍程序,发现还是连接不上。这个问题困扰了我好几天。然后我就想看看自己用的端口号有没有被监听到。于是就运行了自己的服务器,然后在控制台下输入netstat -a发现自己用的端口号出现了两次。然后我停止运行服务器再输入netstat -a  自己写的端口只出现了一次,说明之前的8888端口号已经被占用了,所...

2018-06-27 22:18:36 31306 2

原创 LinuxC——分支语句

在C程序中,我们经常会根据一个表达式的结果来执行不同的操作。这个时候我们就需要用到分支语句。本篇博客将介绍几种分支语句。一、if 语句if语句的通用形式if (expression) statementif语句的用法,首先对expression求值,如果这个值为真,那么就执行statement,如果为假,那么就跳过statement,继续执行下一条语句。通常,expression是一个关系...

2018-06-22 23:33:47 438

原创 LinuxC——循环

在写程序的时候,经常会要求我们的程序做一些重复的动作,这个时候我们就需要用到循环语句了。C语言中的三种循环语句:whilefordo  while接下来就依次介绍着三种循环语句一、while循环while循环的通用形式while(expression) statementstatement可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。如果expression为真(即非零),...

2018-06-21 17:13:13 1571

原创 LinuxC——运算符

本篇博文主要是介绍C语言中的几种运算符的用法C语言中有这样几种运算符1、算数运算符2、关系运算符3、赋值运算符4、逻辑运算符5、条件运算符6、其他运算符一、算数运算符+把右边的值加到左边的值上+作为一元运算符,生成一个大小和符号都与右边值相同的值-从左边的值中减去右边的值-作为一元运算符,生成一个与右边的值大小相等,符号相反的值。*把左边的值乘以右边的值/把左边的值除以右边的值,如果两个运算对象都...

2018-06-19 21:27:13 2019

原创 LinuxC——字符串

一、字符串的简介字符串是一个或者多个字符的序列。例如:"Hello world!"【注】:双引号不是字符串的一部分,双引号只是告诉编译器它括起来的是一个字符串。在C语言中没有字符串变量类型,所以我们需要借助一个char类型的数组类存放一个字符串,并且在字符串的末尾加入一个‘\0’来标记字符串的结束。二、定义一个字符串这里简单地介绍一下数组,数组是由连续的存储单元组成的,字符串中的字符被存储在相邻的...

2018-06-15 22:59:44 1658

原创 LinuxC——数据类型

一、数据类型

2018-06-14 23:12:43 2195

原创 LinuxC——linux的一些基础指令以及C语言的基础知识

这几天准备将LinuxC复习一下,希望这些知识点也能够帮助一些初学者。本篇博客所写的一些指令和代码都是在ubuntu16.04环境下。一、linux中的一些基础指令cd     进入相应的目录例如:进入home目录 cd /homels      查看当前目录中的文件例如:查看home目录中的文件ls /homecat  查看文件中内容例如:查看一个c文件cat hello.cvim   对一个文...

2018-06-09 23:21:46 567

原创 Qt学习之路十四——多人同时在线考试系统

学了这么久的Qt决定动手做一个小项目——多人同时在线考试系统。这个管理考试系统的分为服务器端和客户端,两者之间的通信利用的是TCP/IP协议。 首先服务器端需要首先开启,然后服务器端会和MYSQL数据库进行连接。客户端需要先注册一个账号,注册的时候将信息发送给服务器,服务器存到数据库中。客户端启动的同时,会生成10个随机数,作为题号。登录的时候需要将登录的信息发送给服务器,服务器从数据库中寻找有没...

2018-06-05 22:20:36 3926 11

原创 Qt学习之路十三—— 再谈TCP/IP(多客户端连接服务器)

一、TCP和UDP的区别这里我会用一个表格来显示这两者的区别比较项TCPUDP是否连接面向连接无连接传输是否可靠可靠不可靠流量控制提供不提供工作方式全双工可以是全双工应用场合大量数据少量数据速度慢快二、incomingConnection函数这个函数和之前讲过的newConnection信号功能差不多,只要有新的连接出现,就会自动调用这个函数。然后我们只需在这个函数中新建一个QTcpSocket对...

2018-06-04 23:19:10 38029 32

原创 Qt学习之路十二——利用UDP进行通信

一、UDP的特点UDP(用户数据报协议)是一种简单轻量级、不可靠、面向数据报,无连接的传输层协议。而TCP/IP协议却是有连接的二、UDP适合应用的几种情况1、网络数据大多为短消息2、拥有大量客户端3、对数据安全性无特殊要求4、网络负担非常重,但对响应速度要求高。三、利用UDP进行网络通信因为upd是无连接的,所以两个通信设备之间不需要建立连接,只要知道对方的IP地址和端口号就行了。我们首先创建一...

2018-05-31 22:00:43 12560 6

原创 Qt学习之路十一——文件的读写操作

在我们日常的使用中,我们经常需要对文件进行操作,这篇博客我们就利用qt来对文件进行读写操作。这次我们需要利用ui界面,所以我们在创建项目的时候需要勾选创建界面。然后使用界面设计师进行布局,如下图所示。一、读取文件右击readfile转到槽,然后我们只需要在这个槽函数中实现功能就行了。这个槽函数实现的功能主要是获取读取的文件名,然后打开这个文件,将这个文件的内容读取到一个字节数组中,并且将文件里的内...

2018-05-30 22:00:36 8821

原创 Qt学习之路十——标准文件对话框

我们经常会需要打开文件,现在我们利用qt自己写一段代码来打开一个文件对话框。这篇博客我们只返回用户选择的文件的路径。我们会用到QFileDialog这个类,使用这个类,可以很轻松地获取文件的文件名。在QFileDialog类中,有这样一个函数getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QStri...

2018-05-29 22:49:33 575

原创 Qt学习之路九——不规则窗体

我们通常看到见的窗体都是长方形的窗体,但是有时候我们也会需要用到不规则的窗体,所以我们也需要知道怎么创建一个不规则的窗体。首先创建一个项目,基类选择QWidget,这次我们不勾选创建界面。因为我们需要使用鼠标拖动窗口移动,所以我们需要重写鼠标事件,同时我们还需要用到绘图事件。我们首先需要在这个类的构造函数中创建一个QPixmap对象,然后使用load函数为这个对象填入图像值,这个图像就是整个窗口。...

2018-05-28 18:00:43 708

原创 Qt学习之路八——利用qt对数据库进行操作

之前我也用过mysql数据库,那个时候我还没有接触过qt,现在我们可以通过图形界面的形式对数据库进行操作。一、简单的mysql的语法每条语句都以分号结尾。创建一个数据库格式为:create database 数据库名;例:create database test;创建一个表格式为:create table 表名(内容 类型);例:create table student(number int , ...

2018-05-23 11:35:41 92365 43

原创 Qt学习之路七——TCP/IP网络编程

在qt中的网络编程和之前在windows中的网络编程的基本步骤是一样的,服务器有两个套接字,一个负责监听(QTcpServer),还有一个负责通信(QTcpSocket),客户端只有一个负责通信的套接字(QTcpSocket)。服务器和客户端通信的基本步骤1、QTcpServer对象负责监听是否有客户端连接此服务器。它是通过这样一个函数监听的 tcpserver->listen(QHostA...

2018-05-22 00:26:25 24904 14

原创 Qt学习之路六——分割窗口QSplitter类

我们现在用的很多软件都是由不同的许多窗口构成的,这些窗口会构成一个主窗口,在这个主窗口中,我们可以随意拖拽子窗口。这样的分割窗口的功能就可以通过QSplitter类来实现。Qt Creator的这个界面我们可以看到它由两个窗口构成,我们可以利用鼠标随意拖拽来改变它们的大小。现在我们就来实现分割窗口的功能。新建一个项目工程,然后基类选择QMainWindow,并且取消创建图形界面。我们在main.c...

2018-05-20 17:36:57 2249

原创 Qt学习之路五——堆栈窗体QStackedWidget类

在实际运用中堆栈窗体经常和QListWidget一下拉列表框QComboBox配合使用使用,这样的窗口在生活中也是很常见的。

2018-05-18 23:57:35 3453

原创 Qt学习之路四——停靠窗口

停靠窗口在很多软件中都是很常见的,这里我们就手动地创建一个停靠窗口。我们先新建一个项目,基类选择QMainWindow,取消创建图形界面。然后创建一个QTextEdit对象,作为主窗口,并且将这个编辑框作为主窗口的中央窗体。QTextEdit *te = new QTextEdit("主窗口", this);//设置这个对象作为主窗口te->setAlignment(Qt::AlignCe...

2018-05-18 12:22:00 5116

原创 Qt学习之路三——基本布局管理

在Qt中,有三种基本布局:水平布局,垂直布局、网格布局,它们分别属于QHBoxLayout、QVBoxLayout以及QGridLayout。它们的继承关系是这样的:布局中 常用的方法就是addWidget()和addLayout()。我们来看一个具体的例子。...

2018-05-17 14:47:36 1431

原创 Qt学习之路二——一个简单的计算圆的面积程序

一、使用ui编辑器来布局计算面积的一些控件我们新建一个项目,项目名称为CalArea。并且勾选创建图形界面,基类选择QWidget然后我们将我们需要的一些控件拖到中间的区域,这个区域就是将要设计的顶层窗口部件。我们这个计算面积的小程序需要两个QLabel 类的控件,两个QLineEdit类的控件, 和一个QPushButton类的控件,之后我们需要在对象查看器中改掉它们的命名,如图所示我们这个计算...

2018-05-13 22:35:39 6288 3

原创 Qt学习之路一——Qt概述

一、什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。二、Qt支持的平台Windows—XP、Vista、Win7、Win8、Win2008、Win10。UNIX/X11—Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX/ SGI IRIX等Macintosh—Mac OS X。三、...

2018-05-12 23:46:08 3525

原创 编写MyString类实现C++库中string类的一些基础功能

我们首先来看看C++库中的string类有什么功能。string s1("hel");string s2("lo");string s3; s3 = s1 + s2;cout << s3 << endl;我们就先看看上面这些例子,首先我们可以用一个字符串给s1对象初始化,我们可以用+号连接两个字符串,同时我们还可以用=号直接给s3对象赋值,最后还可以用cout直接...

2018-05-10 21:21:37 2855

原创 C和C++面试秘笈六——C++面向对象(2)

一、C++中的空类默认会产生哪些类成员函数我们来看一个空类class Empty{};这个类中没有定义任何成员,但是为了进行一些默认操作,编译器会给我们加入一些成员函数。1、默认构造函数,和默认拷贝构造函数,它们被用于类的对象的构造过程。2、析构函数,它们别用于类的对象的析构过程。3、赋值函数,它们被用于同类的对象间的赋值过程。4、取值运算,当对类的对象进行取址(&)时,此函数被调用。...

2018-05-09 21:00:11 193

原创 C和C++面试秘笈六——C++面向对象(1)

一、C++相比C的改进C语言是过程式编程语言,它以过程为中心,以算法为驱动。C++是面向对象的编程语言,它是从C语言发展过来的。它以对象为中心,以消息为驱动的编程。二、class和struct的区别1、C语言中的struct和C++中的class的区别在C语言中的struct中只能 定义成员变量,不能定义成员函数。在C++中的class,可以定义成员变量,同时还可以定义成员函数。2、C++中的st...

2018-05-08 23:07:54 190

原创 C和C++面试秘笈四——字符串(2)

一、编程实现字符串中各单词的反转这种题目的思路通常就是先将每个单词中的字母倒置,然后再将整个字符串倒置。#include <iostream>using namespace std;void change(char *str);int main(int argc, char **argv){ char src[] = "I am from Shanghai"; cou...

2018-05-08 15:39:32 145

原创 C和C++面试秘笈四——字符串(1)

在C和C++中没有字符串变量,字符串通常都是用一个字符数组来存放的。这一章的题目能够让我们更好的掌握对数组的运用。一、不使用库函数将整数转换为字符串#include <iostream>using namespace std;void change(int n, char *str){ int temp; int i = 0; char buf[10] = "0"; ...

2018-05-07 00:03:26 259

原创 C和C++面试秘笈三——引用和指针(2)

一、指针数组和数组指针的应用先看下面这一段代码。#include <stdio.h>#include <stdlib.h>int main(){ char *str[] = { "Welcome", "to", "Fortemedia", "Nanjing" }; //第一行 char **p = str + 1;

2018-05-02 21:22:31 182

原创 C和C++面试秘笈三——引用和指针(1)

引用是C++引入的新语言特性,正确、灵活地使用引用,可以使程序简洁高效。一、一般变量的引用引用只是给变量起了一个别名,它们两个存储在同一个存储单元,具有同一地址。来看下面的代码int a = 10;int b = 20;int &rn = a;int equal;rn = b;cout << "a = " << a << endl;cout...

2018-05-01 17:50:13 194

原创 C和C++面试秘笈二——预处理、const、static与sizeof

【注】:本篇博客所使用的编译环境是32位的编译器一、用#define实现宏并求最大值和最小值#define MAX(x,y) (((x) > (y)) ? (x) : (y))#define MIN(x,y) (((x) < (y)) ? (x) : (y))我们可以这样写,加这么括号是因为宏只是简单的文本替换,如果不加括号很容易引起歧义。下面的例子就会讲这一点。二、宏定义的使用我们...

2018-04-30 18:29:44 177

原创 C++复习之路十五——虚析构函数

之前复习了虚函数,今天来复习虚析构函数。虚析构函数也是析构函数,它也没有返回值和参数。之所以叫它虚析构函数是因为在普通的析构函数之前加了一个virtual关键字。虚析构函数的作用我们先来定义这样的一个类A,然后B类继承它,在这两个类里面都声明了一个指针,我们在构造函数里给它们分配了内存空间,并且让它们指向了一个含有十个char类型的数据的数组。class A{public: A() { c...

2018-04-30 00:36:31 159

原创 C++复习之路十四——函数重载和重写

在C++中我们引入了函数的重载和重写,但是好多时候我们往往会将这两个概念搞混。今天就来讲讲这两个概念的区别。函数重载在同一个作用域中,名字相同,但是参数列表不同的函数称为重载函数。【注意】:这里的参数列表不同,是指的参数的类型,个数不同。我们不能通过函数的返回类型来判断它们是不是重载函数。下面我们来看一个函数重载的例子:int func(int a, int b){ int c = a + b...

2018-04-29 00:13:56 154

原创 C和C++面试秘笈一——C和C++程序基础

一、C++域操作符首先看下面的这一段代码#include <stdio.h>int value = 0;void printvalue(){ printf("value = %d\n", value);}int main(){ int value = 0; value = 1; printf("value = %d\n", value); ::value...

2018-04-27 20:01:50 582

原创 C++复习之路十三——虚函数和多态

一、C++三种特性封装:打破了C语言函数的概念,可以将实现细节隐藏起来,使得代码模块化继承:使得代码能够重用,提高了编程效率多态:接口重用,在以后写代码的时候,大框架不需要改变,就能够使用之后写的代码。二、多态的具体实现要实现多态就必须先得有继承。我们先来看一个例子。class Parent{public: void print() { cout << "打印Parent...

2018-04-26 20:59:28 150 1

原创 C++复习之路十二——类继承的构造函数和析构函数执行的顺序问题

一般定义类的时候,我们都会定义构造函数和析构函数,如果我们也想继承这些类,就得知道基类和派生类的构造函数的调用顺序,以及析构函数的调用顺序。(以public继承方式为例)一、构造函数的调用顺序我们先来定义两个类,Child类通过public继承Parent类。class Parent{public: Parent(int a, int b); ~Parent(); void printP...

2018-04-25 20:07:22 344 1

多人在线考试系统完整代码

多人在线考试系统分为客户端和服务器,首先客户需要注册一个账号,然后登陆考试系统进行选题,根据选择的题目来进行考试。

2018-06-05

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

TA关注的人

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