- 博客(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
2660
1
原创 c++多继承
1、 多继承(1)概念:一个类有多个直接基类的继承关系称为多继承 (2)多继承声明语法class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n { 数据成员和成员函数声明 }; 类 C 可以根据访问控制同时继承类A 和类 B 的成员,并添加自己的成员(3)多继承的派生类
2017-09-22 15:47:26
866
原创 c++之运算符重载基础
1、 定义:所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。2、为什么会用运算符重载机制:用复数类举例:Complex c3 = c1 + c2;原因 Complex是用户自定义类型,编译器根本不知道如何进行加减编译器给提供了一种机制,让用户自己去完成,自定义类型的加减操作,这
2017-09-20 20:03:32
571
原创 c++之构造函数和析构函数
1、 构造函数:(1)定义:1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数;2)构造函数在定义时可以有参数;3)没有任何返回类型的声明。(2)调用:自动调用:一般情况下C++编译器会自动调用构造函数手动调用:在一些情况下则需要手工调用构造函数(3)例子代码:#include class test{public:
2017-09-18 20:41:26
604
原创 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
475
原创 c++之命名空间和结构体
(1)C++的命名空间关键字:namespace 用来定义命名空间一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。 例如很多人都参与了一个文件管理系统的开发,它们都定义了一个全局变量 fp,用来指明当前打开的文件,将他们的代码整合在一起编译时,很明显
2017-09-13 20:16:52
4055
原创 C语言之网络编程(服务器和客户端)
Linux网络编程1、 套接字:源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。常用的TCP/IP协议的3种套接字类型如下所示。(1)流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用
2017-08-18 20:27:36
66042
9
原创 C语言之生产者与消费者模型
多线程并发应用程序有一个经典的模型,即生产者/消费者模型。系统中,产生消息的是生产者,处理消息的是消费者,消费者和生产者通过一个缓冲区进行消息传递。生产者产生消息后提交到缓冲区,然后通知消费者可以从中取出消息进行处理。消费者处理完信息后,通知生产者可以继续提供消息。要实现这个模型,关键在于消费者和生产者这两个线程进行同步。也就是说:只有缓冲区中有消息时,消费者才能够提取消息;只有消息已被处理,
2017-08-17 15:01:55
17679
6
原创 C语言之模拟卖票
用共享内存和信号量去模拟一个卖火车票的程序。 首先建立一个共享内存和一个信号量,并初始化信号量,然后用一个指针指向共享内存。然后调用一个卖票的函数,去模拟卖票的功能。头文件#ifndef __SEMAPHORE_H__#define __SEMAPHORE_H__union semun //定义的共同体 { int val; /* Valu
2017-08-14 19:03:18
1072
原创 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
656
原创 C语言之进程控制(僵尸进程和守护进程)
进程控制编程 1、子进程先父进程先结束:如果子进程结束的时候,父进程不做任何处理,那么这个子进程的一些信息会被保留,比如子进程的文件描述符,此时的子进程会被称为僵尸进程。这种僵尸进程会给程序带来不可想象的伤害,所以我们要尽量避免僵尸进程的产生。僵尸进程产生的过程:(1)父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中(进程描述符
2017-08-09 20:41:17
3836
原创 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
949
原创 C语言之文件编程(文件1加文件2)
手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下
2017-08-07 20:23:22
1147
原创 C语言之文件系统编程(1)
在Linux中,为了更好地保护内核空间,程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。1、 文件打开:Openopen()系统调用可以打开或创建一个文件。#include #include #inc
2017-08-06 20:14:45
2689
原创 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
817
原创 C语言之停车场
问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它前面的车要先退出,待它走后在依次进入。 基本功能要求: (1) 建立三个数据结构分别是:停放队列、让路栈、等候队列。 (2) 输入数据模拟管理过程,数据(入或出,车号)。//头函数(一些
2017-08-04 17:21:21
4082
原创 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
1402
原创 C语言之从尾到头打印链表
从尾到头打印链表:看完这题以后,很多人的第一反应就是从头到尾输出比较简单,于是我们很自然地想到把链表中链接结点的指针反转过来,改变链表的方向,就可以从头到尾输出了。但是该方法会改变原来链表的结构。那如果我们不该表链表的结构又怎样打印呢。#include #include typedef struct _list{ struct _list *next; int data;}L
2017-08-02 19:54:25
2253
原创 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
1393
原创 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
517
原创 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
403
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
934
原创 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
581
原创 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
574
原创 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
779
原创 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
650
原创 算法编程之顺序表头插法
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
1728
原创 数据结构之顺序表
创建一个顺序表并销毁它。typedef struct _seqlist //创建一个名叫sequencelist的结构体{ int *list; int len; int MAX_len;}sequencelist;sequencelist *creat_list(); //声明创建一个顺序表的函数void Destroy(sequencelist
2017-07-22 22:05:37
423
原创 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
2783
原创 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
9867
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
4664
原创 C语言编程之识别合法帧(2)
题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧利用函数的调用来实现这个程序// 在字符串str中寻找字符串sub,如果找到返回从sub开始的字符串char *findStr(char* str, char
2017-07-18 19:33:36
948
原创 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
1043
原创 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
580
原创 关于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
20049
1
原创 嵌入人生
今天上了一天的课,晚上是苏嵌的开学典礼,看了很多学长学姐给我们的箴言,颇有感触。 虽然晚上没有上晚自习,但是回宿舍洗漱完也不早了,本打算今天不打算写博客的,因为今天白天上了一天的课,晚上又没有时间来复习一下,所以没什么准备。但是又突然想到,很多学长进入苏嵌以来,起点本没有我高,但是他们为什么能取得那么大的成就,很难想象他们付出了多少。他们说敲代码敲到凌晨两点,那是怎样的一种坚持,我又能做到吗
2017-07-14 22:07:51
422
原创 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
1024
原创 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
7528
原创 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
16971
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
406
空空如也
单链表结点数据被改变
2018-05-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人