自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 问答 (1)
  • 收藏
  • 关注

原创 聊天室(c/s架构)

项目要求:(1)采用 Client/Server 架构 。 (2) Client A 登陆聊天服务器前,需要注册自己的 ID 和密码。 (3)注册成功后,ClientA 就可以通过自己的 ID 和密码登陆聊天服务器 。 (4). 多个 Client X 可以同时登陆聊天服务器之后,与其他用户进行通讯聊天。 (5).Client A 成功登陆后可以查看当前聊天室内其他在线用户 C

2017-10-08 18:10:25 2492 1

原创 c++多继承

1、  多继承(1)概念:一个类有多个直接基类的继承关系称为多继承 (2)多继承声明语法class 派生类名 : 访问控制 基类名1 ,  访问控制  基类名2 ,  … , 访问控制  基类名n    {        数据成员和成员函数声明    };  类 C 可以根据访问控制同时继承类A 和类 B 的成员,并添加自己的成员(3)多继承的派生类

2017-09-22 15:47:26 765

原创 c++之运算符重载基础

1、  定义:所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。2、为什么会用运算符重载机制:用复数类举例:Complex c3 = c1 + c2;原因 Complex是用户自定义类型,编译器根本不知道如何进行加减编译器给提供了一种机制,让用户自己去完成,自定义类型的加减操作,这

2017-09-20 20:03:32 498

原创 c++之构造函数和析构函数

1、  构造函数:(1)定义:1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数;2)构造函数在定义时可以有参数;3)没有任何返回类型的声明。(2)调用:自动调用:一般情况下C++编译器会自动调用构造函数手动调用:在一些情况下则需要手工调用构造函数(3)例子代码:#include class test{public:

2017-09-18 20:41:26 547

原创 c++引用

C++的引用(1)      概念:在c++中,引用的意思就是引用可以看作一个已定义变量的别名。(2)      语法:int a = 10; int &b = a; (意思是b引用a,这个时候a和b代表同一块地址,并且有一样的数据)(3)      例子:(普通引用)#include int main(){ int a = 10; int &b = a; printf(

2017-09-16 20:28:29 416

原创 c++之命名空间和结构体

(1)C++的命名空间关键字:namespace  用来定义命名空间一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。 例如很多人都参与了一个文件管理系统的开发,它们都定义了一个全局变量 fp,用来指明当前打开的文件,将他们的代码整合在一起编译时,很明显

2017-09-13 20:16:52 3884 1

原创 C语言之网络编程(服务器和客户端)

Linux网络编程1、 套接字:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。常用的TCP/IP协议的3种套接字类型如下所示。(1)流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用

2017-08-18 20:27:36 64916 9

原创 C语言之生产者与消费者模型

多线程并发应用程序有一个经典的模型,即生产者/消费者模型。系统中,产生消息的是生产者,处理消息的是消费者,消费者和生产者通过一个缓冲区进行消息传递。生产者产生消息后提交到缓冲区,然后通知消费者可以从中取出消息进行处理。消费者处理完信息后,通知生产者可以继续提供消息。要实现这个模型,关键在于消费者和生产者这两个线程进行同步。也就是说:只有缓冲区中有消息时,消费者才能够提取消息;只有消息已被处理,

2017-08-17 15:01:55 17104 6

原创 C语言之模拟卖票

用共享内存和信号量去模拟一个卖火车票的程序。 首先建立一个共享内存和一个信号量,并初始化信号量,然后用一个指针指向共享内存。然后调用一个卖票的函数,去模拟卖票的功能。头文件#ifndef __SEMAPHORE_H__#define __SEMAPHORE_H__union semun //定义的共同体 { int val; /* Valu

2017-08-14 19:03:18 985

原创 C语言之文件编程标志I/O库(2)

标志I/O库:C标准库提供了操作文件的标准I/O函数库,与系统调用相比,主要差别是实现了一个跨平台的用户态缓冲的解决方案。简单来说就是标准I/O的移植性更好。(1) 函数fopen():#include   // 头文件FILE *fopen(const char *path, const char *mode);   //函数原型fopen打开由path指定的文件,并把它与一

2017-08-10 19:53:29 600

原创 C语言之进程控制(僵尸进程和守护进程)

进程控制编程 1、子进程先父进程先结束:如果子进程结束的时候,父进程不做任何处理,那么这个子进程的一些信息会被保留,比如子进程的文件描述符,此时的子进程会被称为僵尸进程。这种僵尸进程会给程序带来不可想象的伤害,所以我们要尽量避免僵尸进程的产生。僵尸进程产生的过程:(1)父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中(进程描述符

2017-08-09 20:41:17 3706

原创 C语言判断二叉树的子树

题目:输入两颗二叉树A和B,判断B是不是A的子结构。比如:思路:第一步在树A中找到和B的根结点的值一样的点假设为R,第二部再判断A中以R为根结点的子树是不是包含和树B一样的结构。代码:#include #include typedef struct _btreenode{ struct _btreenode *lchild; //树的左孩子 st

2017-08-08 20:08:25 866

原创 C语言之文件编程(文件1加文件2)

手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下

2017-08-07 20:23:22 1070

原创 C语言之文件系统编程(1)

在Linux中,为了更好地保护内核空间,程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。1、 文件打开:Openopen()系统调用可以打开或创建一个文件。#include #include #inc

2017-08-06 20:14:45 2606

原创 C语言之简单计算器

简易计算器//头函数#ifndef __1JISUANQI_H__#define __1JISUANQI_H__#define TRUE 1#define FLASE 0#define SIZE 100typedef struct _numstack{ float data; struct _numstack *next;}NumNode;typedef struct _

2017-08-04 17:34:03 755

原创 C语言之停车场

问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它前面的车要先退出,待它走后在依次进入。 基本功能要求: (1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。 (2) 输入数据模拟管理过程,数据(入或出,车号)。//头函数(一些

2017-08-04 17:21:21 3976

原创 C语言之各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)

#include void swap(int num[],int a, int b){ int tmp; tmp = num[a]; num[a] = num[b]; num[b] = tmp;}void printfA(int *num,int len){ int i; for(i = 0;i < len; i++) { printf("%4d",num[i

2017-08-03 19:28:45 1312

原创 C语言之从尾到头打印链表

从尾到头打印链表:看完这题以后,很多人的第一反应就是从头到尾输出比较简单,于是我们很自然地想到把链表中链接结点的指针反转过来,改变链表的方向,就可以从头到尾输出了。但是该方法会改变原来链表的结构。那如果我们不该表链表的结构又怎样打印呢。#include #include typedef struct _list{ struct _list *next; int data;}L

2017-08-02 19:54:25 2062 2

原创 C语言之递归(李白打酒)

#include int count = 0;void libai(int store, int flower,int alco, int pre, char *ch, int index){ if(store == 0 && flower == 0) { if(alco == 0 && pre == 0) { int i; for(i = 0;i < 15; i

2017-08-01 20:55:17 1290

原创 C语言之树

//头函数#ifndef __1TREE_H__#define __1TREE_H__#define FLASE 0#define TRUE 1struct _treenode;typedef struct _childnode{ struct _treenode *parentnode; struct _childnode *childnext;}ChildNode;

2017-07-31 19:48:10 437

原创 C语言之二叉树(包括遍历的实现)

//头函数#ifndef __2TREE_H__#define __2TREE_H__#include "error.h"#define TRUE 1#define FALSE 0typedef struct _btree{ char data; struct _btree *rchild; struct _btree *lchild;}Btree;typedef

2017-07-31 19:41:13 365 1

原创 C语言之数组队列

//主函数头文件#ifndef __SQQUEUE_H__#define __SQQUEUE_H__#include "error.h"#define SIZE 10#define TRUE 1#define FLASE 0typedef struct _queue{ int data[SIZE]; int front; int rear; }Queue;int

2017-07-28 20:50:03 871

原创 C语言之链表栈

#ifndef __LISTSTACK_H__#define __LISTSTACK_H__#include "error.h"#define TRUE 1#define FLASE 0#define SIZE 100typedef struct _sqstack{ int data; struct _sqstack *next;}StackNode;typedef s

2017-07-27 20:00:50 550

原创 C语言之队列编程

#ifndef __QU_LIST_H__#define __QU_LIST_H__#include "error.h"#define TRUE 1#define FLASE 0typedef struct _node{ int data; struct _node *next;}Node;typedef struct _Qu_list{ Node *front;

2017-07-26 20:30:01 515

原创 c语言之电子通讯录

#include "linklist.h"#include #include #include #define FALSE 0#define TRUE 1typedef struct _message{ int id; int tel; int com_tel; char name[20]; char address[30];}Age;typedef struct

2017-07-25 22:21:04 733

原创 C语言之单链表(增删改查逆)

单链表的增删该查逆#include #include #define FALSE 0#define TRUE 1typedef struct _node //创建结构体{ int data; struct _node *next; //创建一个结构体指针}Node;int head_insert(Node **h,int data) //头插法{ if(

2017-07-24 20:38:58 589

原创 算法编程之顺序表头插法

int New_size(sequencelist *s) //为顺序表开辟一块更大的空间{ if(s == NULL) { return FALSE; } int new_size = sizeof(int) / sizeof(char)*(SIZE_LIST + NEW_SIZE); //开辟新空间关键代码 int *tmp = (int *)realloc(s->

2017-07-23 20:49:28 1636

原创 数据结构之顺序表

创建一个顺序表并销毁它。typedef struct _seqlist //创建一个名叫sequencelist的结构体{ int *list; int len; int MAX_len;}sequencelist;sequencelist *creat_list(); //声明创建一个顺序表的函数void Destroy(sequencelist

2017-07-22 22:05:37 387

原创 C语言位运算之求字节中被置为1的个数

题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数void statistics(char ch){ int count = 0; int i; for(i = 0;i < 8; i++) { if(ch & 1 == 1) { count++; } ch = ch >> 1; } printf("count = %d\n",count);}

2017-07-21 20:13:41 2585

原创 C语言编程之递归求阶乘

题目: 利用递归方法实现一个函数,该函数能够实现n的阶乘,即 n! = n*(n-1)*…*3*2*1;#include int factorial(int n){ if(n == 1) //结束递归判断条件 { return; } return n*factorial(n - 1); //递归调用自己}int main(){ int n; printf("

2017-07-20 19:22:35 9298 3

原创 C语言编程之汉诺塔

汉诺塔游戏游戏规则:,输入一个数字,代表圆盘数量。然后有3根柱子A,B,C.把圆盘从下面开始按大小顺序重新摆放在A柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。,将A柱子上的圆盘全部放到C柱子上去。代码void hanoi(int n, char a, char b, char c){ if(n == 1)//判断结束标志 { count++;//

2017-07-19 17:22:22 4541

原创 C语言编程之识别合法帧(2)

题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧利用函数的调用来实现这个程序// 在字符串str中寻找字符串sub,如果找到返回从sub开始的字符串char *findStr(char* str, char

2017-07-18 19:33:36 843

原创 C语言基础编程之识别合法帧

输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧#include #include #include int main(){ char a[100]; char b[10]; char c[10]; c

2017-07-17 16:49:35 965

原创 C语言基础编程之进制转化

#includeint main(){ int num,i,j,sys; char a[100]; printf("please input a system 2 to 9 or 16 that you want:");//输入你想转化的进制。 scanf("%d",&sys); printf("please a number:");//输入你想转化的数。 scanf("%d

2017-07-16 20:38:22 529

原创 关于C语言中“x++”和“++x”的问题

关于一个变量在不同环境下自增自减的问题。#includeint main(){ int x = 8; int y = 0; y = (++x) + (x++) + (++x); printf("%d\n",y); return 0;}在Linux环境下,输出的结果是是28,但是在Windows环境下,输出的结果却是30,这就和“++x”和“x++”有关了。首

2017-07-15 20:16:19 19351 1

原创 嵌入人生

今天上了一天的课,晚上是苏嵌的开学典礼,看了很多学长学姐给我们的箴言,颇有感触。  虽然晚上没有上晚自习,但是回宿舍洗漱完也不早了,本打算今天不打算写博客的,因为今天白天上了一天的课,晚上又没有时间来复习一下,所以没什么准备。但是又突然想到,很多学长进入苏嵌以来,起点本没有我高,但是他们为什么能取得那么大的成就,很难想象他们付出了多少。他们说敲代码敲到凌晨两点,那是怎样的一种坚持,我又能做到吗

2017-07-14 22:07:51 385 1

原创 C语言基础之scanf的问题

#includeint main(){ char a, b; printf("请输入两个字符:\n"); scnaf("%c", &a); scanf("%c", &b); printf("%c", a); printf("%c", b); return 0;} 在Linux环境下输入两个字符,结果输出只有一个字符的问题.。主要原因是因为当你输入一个字符以后

2017-07-13 20:55:36 785

原创 C语言基础编程之统计字母,数字和空格

统计字符,数字和空格方案一:int main(){ int number = 0, letter = 0, spece = 0;//对计数变量的初始化 char ch = 0; while (ch != '\n')//用while循环来完成字符的输入,我们输入一个字符,就判断一个字符。直到我们输入完成按下回车键,就完成统计并输出计好的变量。 { scanf("%c", &ch)

2017-07-12 20:11:43 7339

原创 C语言基础编程(switch语句)

给出一百分制成绩,要求输出成绩等级‘A’、’B’、‘C’、‘D’、‘E’。90分以上为‘A’ ,80~89分为’B’ ,70~79分为‘C’...#includeint main(){ int gra; printf("please input grade:"); scanf("%d",&gra);//输入成绩 switch(gra / 10)//除10,把题目给的分数区间

2017-07-12 19:51:01 16714 1

原创 算法基础之选择排序法

#include int main(){    float num[5],flog;    int i,j;     printf("please input 5 number:");    for(i = 0;i     {        scanf("%f",&num[i]);    }     for(i = 0;i     {  

2017-07-11 17:34:38 362

空空如也

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

TA关注的人

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