C/C++
文章平均质量分 72
pdcxs007
这个作者很懒,什么都没留下…
展开
-
编译原理学习:TINY语言词法扫描程序实现
《编译原理及实现》上的TINY语言词法扫描器的实现。并做了如下改善:1、允许嵌套注释2、标识符允许出现数字,但是必需以字母开头(和C语言一样)原创 2014-10-11 21:18:40 · 10974 阅读 · 4 评论 -
通信网project——最大通过率问题
以下的更改基于上一篇博客。首先,vertex类的d由整型改变为float型。有两种方法(都是作用于update函数)第一:将边的权重取对数。通过率越大,则对数越接近0(总为负数),由此,将update函数改为:void Graph::update(Vertex* v){ list inc = incMap[v]; if (inc.size() == 0) { cer原创 2014-05-22 18:01:09 · 1018 阅读 · 0 评论 -
计通网实验的准备工作(2):成帧实现(C语言)
为计通网实验准备的一套工具。C语言实现,包括编码、添加CRC校验码、添加标记、提取帧、去除标记、检验CRC、生成ack、解码。原创 2014-04-12 13:31:55 · 2475 阅读 · 0 评论 -
通信网Project之——单源单宿最短路问题
Dijkstra算法以及图论的一些数据结构。C++实现。原创 2014-05-17 21:10:09 · 1663 阅读 · 0 评论 -
自己做的一个输入输出缓冲池
用C++做的一个输入输出缓冲池,可优化硬盘文件读写的速度,支持多种数据类型。原创 2014-05-15 21:51:45 · 2059 阅读 · 0 评论 -
计通网实验的准备工作(C语言实现)
今天老师布置计通网实验的项目。要实现两台计算机之间的通信。现在先考虑编码问题:即,如何实现中文和英文的混合编码。经过实验,C语言中,一个中文字符的长度是2,但是英文字符的长度是1.如果加以区分,是一件十分困难的事情。但是,在文件的输入中,读入两个char类型,分别对应中文的前一字节和后一字节,则在输出时可以正常输出为一个中文字符(需连续输出)。于是,我的想法是:不用考虑中文还是英文,只用cha原创 2014-04-03 13:51:48 · 1392 阅读 · 0 评论 -
链路层的编码研究(1)二进制码的打印
C++实现多种数据类型及对应数组的二进制输出。原创 2014-04-01 13:49:22 · 971 阅读 · 0 评论 -
链路层的编码研究(2)最简单的编码方式
一种简单的编码方式的实现。原创 2014-04-01 14:09:25 · 1396 阅读 · 0 评论 -
C++中静态初始化的相依性
C++中静态初始化的相依性这几天读《C++编程思想》时碰到讲解静态初始化的相依性,感觉十分晦涩。于是,自己总结了一下,以理清思路。一、问题出在哪里?在写一个工程的时候,如果一个静态变量的初始化依赖于另一个静态变量,那么他们的顺序是很重要的。基本的变量需要首先声明。然而,当我们写的程序需要这样子做但是又必须将相互依赖的静态对象放到不同的文件中时,那么它们初始化的顺序就交给了连接器。这是一原创 2013-11-13 14:10:37 · 1862 阅读 · 0 评论 -
软基作业——最后一次的留念
最后一次软基上机了。好桑感呀。一下是最后一次上机的两个题目以及我的程序。ex5_1.c#include int seq_search(int data[], int key, int length);int bin_search(int data[], int key, int length);int main(void){ int data[] = {3,原创 2013-11-07 20:21:04 · 828 阅读 · 0 评论 -
软基作业——先序遍历法生成二叉树
软基作业——先序遍历法生成二叉树.原创 2013-10-30 17:23:29 · 1213 阅读 · 0 评论 -
STL中用ERASE()方法遍历删除元素
STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 在使用 list、set 或 map遍历删除某些元素时可以这样使用:转载 2014-05-24 19:54:54 · 1079 阅读 · 0 评论 -
Qt学习一:直接使用QT工具
今天通过直接使用QT的一些工具来编写命令行程序,可以看到一种Qt的更加通用的使用方法。内容非常简单,输出当前的日期。首先使用的是QDate类,可以使用QDate类的静态方法currentDate来获得当前日期。其次,标准库里面的cout已经无法输出QString类型,就此使用QTextStream类来输出。在QTextStream类已经定义了endl和flush等常用变量,可以直接使用原创 2014-06-27 10:25:58 · 1878 阅读 · 0 评论 -
Boost cpu_timer 学习笔记
学习cpu_timer和auto_cpu_timer的笔记。原创 2015-08-04 19:39:05 · 4594 阅读 · 1 评论 -
simclist库使用初体验
最近的几个课题都是网络编程,发现链表非常常用。现在正在和C语言热恋中,不太愿意再碰C++了,于是需要一个C语言的链表库。今天找到了一个叫做simclist的库,发现非常好用。在此分享一下。原创 2015-06-03 12:30:47 · 1560 阅读 · 0 评论 -
如何正确清空cin缓存
关于cin缓存的清空,网上有各种说法。最多的是使用 cin.sync();但是,关于这个sync方法在不同的编译器中有不同的实现。VC中确实可以清空cin的缓存,但是在GNU中,不行。因此使用sync方法是没有通用性的。又有说法是使用 cin.seekg(0, ios_base::end);但是依旧无法正常工作。以下是一个测试代码原创 2015-05-12 16:32:47 · 13632 阅读 · 0 评论 -
Makefile生成器,使用C++和Boost实现
今天学习了一下Boost的文件遍历功能,同时发现GNU编译器有-MM选项,可以自动生成依赖关系,于是利用以上两点写了一个Makefile生成器。可以生成一般的单个可执行文件的Makefile,使用的是Windows+Mingw+boost环境。如果使用Linux,只需在程序中的两个System系统调用处和clean标签生成处将del 改成rm相关操作就好了。下面是源代码:makemake.原创 2014-10-28 14:59:37 · 3292 阅读 · 0 评论 -
gethostbyname() 及 getaddrinfo() 用法探究
主要是如何使用两个函数的返回结构。在gethostbyname函数中,返回hostent,linux参考手册介绍如下:struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtyp原创 2015-04-01 20:20:09 · 11618 阅读 · 0 评论 -
Linux下的通信时延测试程序
今天段老师在网络软件设计课上布置了一个题目。要求是windows环境,现在在linux环境下实现。运行C/S模式的2个程序,使用UDP协议,发送10次,计算平均时延。原创 2015-03-12 12:04:28 · 3167 阅读 · 0 评论 -
Tcp/ip实验准备:一个简单的定时器——boost实现
tcp/ip实验需要在指定的时间查看结果,为了实验方便,做了一个定时器。使用方法是:在命令行输入:timer输入数字之后,计时相应秒数输入m数字之后,计时相应分钟数(支持小数分钟数)输入q退出。时间到了之后会有3声蜂鸣,并显示Time is up!原创 2014-11-14 09:22:36 · 1510 阅读 · 0 评论 -
一个日历问题的C语言,C++(boost),python,Javascript,Java和Matlab的实现
下面问题的多种语言的解决方法:根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?a) 1900.1.1是星期一b) 1月,3月,5月,7月,8月,10月和12月是31天c) 4月,6月,9月和11月是30天d) 2月是28天,在闰年是29天e) 公元年数能被4整除且又不能被100整除是闰年f) 能直接被400整除也是闰年原创 2014-12-22 21:21:26 · 2280 阅读 · 0 评论 -
一个计算器的C语言实现
一个C语言实现的计算器,解释型程序,支持先乘除后加减以及小括号。支持空白字符读入。参考《编译原理及实践》一书。原创 2014-10-16 22:24:37 · 24889 阅读 · 11 评论 -
使用Boost Regex 的regex_search进行遍历搜索
在regex_search函数中,会将找到的第一个匹配结果保存到一个smatch类中。然而如果搜索字符串中有多个匹配结果,则需要自己实现了。在smatch中,有两个成员,官方文档如下:iterator first:An iterator denoting the position of the start of the match.iterator secondAn ite原创 2014-10-10 17:58:44 · 11858 阅读 · 1 评论 -
软基作业:二叉树的创建与遍历
软基作业:二叉树的创建与遍历。原创 2013-10-30 14:11:42 · 1325 阅读 · 0 评论 -
C语言伪随机数的生成
C语言中随机数的生成方法。原创 2013-09-26 18:39:40 · 5650 阅读 · 0 评论 -
ubuntu下的c/c++环境搭建(转)
ubuntu下的c/c++环境搭建是比较简单,因为有apt和新立得的帮助.1.首先是配置gcc,在ubuntu安装完成已经有gcc了(gcc是由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java, and Ada.).但是gcc还不能编译转载 2013-01-21 18:43:48 · 686 阅读 · 0 评论 -
C语言随机数的实现
C语言随机数的实现此次笔记基于《C语言程序设计--现代方法》。通过一个发牌的程序说明。此程序负责发一副纸牌。每张纸牌有一个花色(suit)和一个等级(rank)。程序需要用户输入手里应握有几张纸牌。为了随机抽取纸牌,采用一些C语言的库函数。time函数返回当前的时间,用一个数表示。srand函数初始化C语言的随机数生成器通过把time函数的返回值传递给函数srand可以避免程序原创 2013-01-21 10:55:02 · 2327 阅读 · 0 评论 -
排序的一种高效实现:分治排序与插入排序混合使用
用C语言实现的分治法与排序法的混合使用,使排序更为合理,高效。 /************************************************************** * Sort.h * * To sort numbers by mixing of INSERT原创 2012-12-28 21:29:33 · 795 阅读 · 0 评论 -
用C语言实现分治法排序
参考《算法导论》, 用C语言实现了分治法的排序。。。/********************************************************* * MERGE_SORT.C * * To sort n numbers by merge sort method原创 2012-12-27 12:02:24 · 4316 阅读 · 0 评论 -
用C语言实现插入排序
/***************************************************** * insertion_sort.c * * Sort N numbers by INSERTION_SORT * * by pdcxs原创 2012-12-23 14:59:45 · 500 阅读 · 0 评论 -
Makefile教程(二)(转)
三、make是如何工作的 在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。 3、转载 2012-12-23 15:12:07 · 451 阅读 · 0 评论 -
Makefile教程(一)(转)
Makefile介绍——————— make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。 首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令转载 2012-12-12 11:35:19 · 438 阅读 · 0 评论 -
笔记整理:关于C和C++的编译、连接过程
笔记整理:关于C和C++的编译、连接过程最近感觉C和C++的编译和连接过程有些难以理解。在此整理笔记,以理清思路。每一个程序都是经过编译和连接后生成可执行文件的。编译过程由编译器实现。而连接过程由连接器实现。编译在编译过程中,每一个源文件都是一个编译单元。编译器会检查语法错误,并且检查函数和变量是否声明以及声明是否正确。编译后每一个源文件产生一个后缀名为.obj或者原创 2012-12-04 14:22:52 · 586 阅读 · 0 评论 -
C风格库文件笔记
C风格库文件笔记今天学习《Thinking in C++》数据抽象。看到袖珍C库的程序。作为一个C++初学者,感到理解有些困难。因此整理笔记,以便理清思路,并得以更加深入地理解库文件。源程序如下: //:Clib.h//一个可以在运行过程中创建的类似数组的结构typedef struct CStashTag{ int size; //每个空间的大小原创 2012-12-02 13:46:44 · 584 阅读 · 0 评论 -
关于格式类型转换
关于格式类型转换C++中提供4种显式类型转换。今天实验了其中的static_cast、const_cast、与reinterpret_cast。static_cast转换用于比较安全的转换或者意义清晰的转换。同时可以用于显式地说明编译器自动的隐式类型转换。 //static_cast.cpp#includeusing namespace std;int main(){原创 2012-11-30 13:32:12 · 678 阅读 · 0 评论 -
C语言数组应用之图形数字的输出
C语言数组应用之图形数字的输出今天做《C语言程序设计——现代方法》的习题,发现数组这块有一道有意思的图形数字的题目。特此记载。程序效果如下:首先,程序使用一个MAX_DIGITS的宏来控制最多输出的数字。若数字输出个数多于该宏,将被忽略。除数字外的其他字符将被忽略。使用segments函数存储图形数字的相应信息。数字被分为7个部分,编号如下:所以segm原创 2013-02-08 19:00:20 · 5438 阅读 · 0 评论 -
字符串惯用法笔记
字符串惯用法笔记字符串的惯用法有很多,这里总结最常用的两种。第一、字符串末尾的搜索考虑编写strlen函数,这是最直接的方法:size_t strlen(const char *s){ size_t n; for(n = 0; *s != '\0'; s++) n++; return n;}可以改进使程序更加简洁:siz原创 2013-02-15 10:26:31 · 653 阅读 · 0 评论 -
支持多种类型的栈——C语言实现
今天看《C++编程思想》,对其的C风格库的程序略有所得。通过书里用到的方法(指针类型的灵活转换),自己写了一个栈,可以存放多种类型。原创 2013-10-03 22:03:12 · 2175 阅读 · 0 评论 -
软基作业——使用链表实现多项式的存储以及加法
当多项式的次数十分稀疏时,比如1+x^500,存储使用数组无疑会浪费大量的空间。因此,使用链表便成为明智的选择。原创 2013-09-16 18:48:20 · 1235 阅读 · 0 评论 -
链表的头文件以及一些简单的应用
最近软基的作业中,链表十分常用。于是将链表的声明和一些常用的功能封装到头文件里,以后直接引用就可以了。另外此处还有两个小程序展示部分功能的用法。原创 2013-09-30 12:35:06 · 3471 阅读 · 0 评论