- 博客(36)
- 收藏
- 关注
原创 排序算法
1.快速排序void SortByName(data mydata[],int left,int right) //left,right is index{ if(left>=right) return; int first=left,last=right; data key; CopyData(key,mydata[first]); cout<<key
2015-08-30 20:12:49 268
原创 活动选择问题-动态规划/贪心算法
问题描述: 有一个需要使用每个资源的n个活动组成的集合S= {a1,a2,···,an },资源每次只能由一个活动使用。每个活动ai都有一个开始时间和结束时间,且 0定义子集合Sij = { ak S : f i 假设S中的活动已按照结束时间递增的顺序排列,则Sij具有如下的性质:1.当i 2.假设ak属于Sij,那么ak将把Sij分解成两个子问题,Sij包
2015-08-27 22:24:15 868
原创 求一个小于10的正整数的n次方,n很大
经常碰到一个小数的n次方的问题,结果数量级很大,超过double的范围,但是这种问题可以转为求一个小于10的正整数的n次方,然后在进行处理。void power(int *a,int base,int n) { int j,k,i,set=0; for (k=base,i=0;i<MAX;i++,k/=10) a[i]=k%10; f
2015-08-27 19:03:50 1467
原创 事件驱动仿真
#ifndef SIMULATE_H_#define SIMULATE_H_#include #include #include using namespace std;#define MAX 100//event classenum EventType{ Arrival, Departure }; //event typestruct Customer{ int
2015-08-26 21:56:25 1972
原创 linux下byte to byte 比较文件
#include #include #include #include #include #include #include using namespace std;#define SIZE 30#define BLOCKSIZE 4096char path1[SIZE];char path2[SIZE];size_t min(size_t a,siz
2015-08-26 21:43:09 637
转载 linux下I/O缓冲
缓冲区作用:在实际编程中,I/O速度取决于显示器、键盘、硬盘等I/O设备的性能,而这些设备比起CPU和内存是比较慢的。因此系统采用缓冲区的方式来减少I/O的读写,以便提高系统性能。I/O的缓冲区的种类:1、无缓冲;2、行缓冲;3、全缓冲。一、行缓冲:看一个例子:[cpp] view plaincopy#incl
2015-08-16 17:04:09 296
转载 exit与_exit
在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如
2015-08-16 16:55:18 289
原创 解释器文件
1.在/home/tian/UNIX/8-20文件夹下创建一个解释器文本testinterp#! /home/tian/UNIX/8-20/echoarg foo2.创建echoarg程序:#include "apue.h"int main(int argc,char *argv[]){ int i; for(i=0;i<argc;i++) printf("ar
2015-08-16 16:30:04 348
原创 exec调用新程序
被调用程序:#include #include #include int main(int argc, char *argv[], char **environ){ int i; printf("I am a process image\n"); printf("My pid = %d, parentpid = %d\n", getpid(), getppid());
2015-08-16 15:23:23 426
原创 strlen()和sizeof()函数
strlen计算不包括终止null字节的字符串长度,而sizeof则计算包括终止字符null字节的字符串长度。strlen获得的是实际大小,而sizeof获得的是初始化的大小。
2015-08-15 19:41:23 319
原创 C和C++文件操作区别
基于C的文件操作在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下:typedef struct {int level;unsigned flags;char fd;unsigned char hold;int
2015-08-15 10:01:36 1449
原创 atoi函数和strtok函数
atoi函数:将字符串转换成整型数。(包含在头文件stdlib.h中)strtok函数:将一个字符串按一定的规则分成若干个子字符串。(包含在头文件string.h中)atoi用法比较简单,下面主要来说strtok函数的用法:char *strtok(char *str, const char *delim);功能:分解字符串为一组标记串。str为要分解的字符串,delim为分隔符字符串
2015-08-15 09:48:29 1079
原创 如何读写二进制文件
如果用getc或putc读写一个结构,那么必须循环通过整个结构,每次循环处理一个字节,这会非常麻烦。如果使用fputs和fgets,那么遇到null字节就会停止,而在结构中可能含有null字节,所以不能使用它实现读结构的要求。如果进行二进制I/O操作,每次可以读或者写一个完整的结构。#include size_t fread(void *restrict ptr,size_t si
2015-08-15 09:30:16 640
原创 一个简单的makefile的编写
头文件:part.hcpp文件(包含part.h):part.cppcpp文件(包含part.h):partMain.cppmakefile编写如下:main:partMain.o part.o g++ -o main partMain.o part.o partMain.o:partMain.cpp part.h g++ -c partMain.cpp part.o:pa
2015-08-14 22:00:05 388
原创 定义全局变量
定义全局变量时,以下面为例:一个工程有part.h part.cpp main.cpp三个文件其中后两个文件都包含前面的头文件,则不要在part.h中定义变量,这样会出现重复定义,较好的做法是定义全局变量。part.h中:extern int a;part.cpp中:int a;main.cpp中就不要在定义了.
2015-08-14 15:16:59 313
原创 vector创建数组及对应操作
一.创建一维数组vector a(size,initValue);也可以不进行初始化。vector a;其中size是数组的大小,initValue是初始值。此外还可以重新设置大小和初始值。a.resize(newSize,newValue);往创建的数组中插值有两种方法:1.insert函数iterator insert( iterator loc
2015-08-10 21:16:52 695
原创 关于err_sys未定义错误解决方法
err_sys以及err_quit等函数不是C语言自带函数,是作者自己编写的函数。所以,想要运行书中的源代码,就必须自建一个头文件my_err.h把作者的代码拷贝进去,然后在程序中加载,可以和apue.h放在一个路径下,然后在代码中加上#include "error.h"。下面是error.h的内容。#include errno.h> /* for defini
2015-08-07 21:29:34 4403
原创 C++中max_element和min_element
函数原型:#include iterator max_element( iterator start, iterator end ); iterator max_element( iterator start, iterator end, BinPred p );用法:#include#
2015-08-04 23:32:45 642
原创 函数fork和vfork
一个现有的进程可以调用fork函数创建一个新的进程。#include pid_t fork(void);返回值:子进程返回0,父进程返回子进程ID;若出错,返回-1 。fork函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新建子进程的进程ID。将子进程ID返回给父进程的原因是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得
2015-08-03 23:09:12 388
原创 函数setjmp和longjmp
在C中,goto语句是不能跨越函数的,而执行这种类型跳转功能的是函数setjmp和longjmp。#include "apue.h"#define TOK_ADD 5void do_line(char *);void cmd_add(void);int get_token(void);int main(void){ char line[MAXLINE];
2015-08-03 19:38:27 388
原创 binary search
一.定义二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小到大有序地存放在数组(array)中,首先将给定值key与字典中间位置上元素的关键码(key)比较,如果相等,则检索成功;否则,若key小,则在字典前半部分中继续进行二分法检索;若key大,则在字典后半部分中继续进行二分法检索。这样,经过一次比较就缩小一半的
2015-08-03 14:59:50 393
转载 vector用法
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 vector类常用的函数如下所示: 1.构造函数vector():创建一个空vectorvector(int
2015-08-02 15:58:08 244
原创 添加动作
本节,我们将在前面主窗口基础之上,添加菜单和工具栏等的动作。虽然 Qt Creator 已经帮我们实现了主窗口的框架代码,但是具体的功能,还是需要我们一行行添加。Qt 使用 QAction 类作为动作。顾名思义,这个类就是代表了窗口的一个“动作”,这个动作可能显示在菜单,作为一个菜单项,当用户点击该菜单项,对用户的点击做出响应;也可能在工具栏,作为一个工具栏按钮,用户点击这个按钮就可以执行相应
2015-08-02 14:56:30 339
原创 MainWindow简介
QMainWindow 是 Qt 框架带来的一个预定义好的主窗口类。所谓主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口。比如你现在正在使用的浏览器,那么主窗口就是这个浏览器窗口。试着回想一下经典的主窗口,通常是由一个标题栏,一个菜单栏,若干工具栏和一个任务栏。在这些子组件之间则是我们的工作区。事实上,QMainWindow 正是这样的一种布局。下面我们新建一个工程。还记得
2015-08-02 14:23:30 2871 1
原创 QT模块简介
Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是基础模块,在所有平台上都可用;后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台之上可以酌情引入。Qt 基础模块分为以下几个:Qt Core,提供核心的非 GUI 功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、I
2015-08-02 13:54:44 367
原创 自定义信号槽
经典的观察者模式在讲解举例的时候通常会举报纸和订阅者的例子。有一个报纸类 Newspaper,有一个订阅者类 Subscriber。Subscriber 可以订阅 Newspaper。这样,当 Newspaper 有了新的内容的时候,Subscriber 可以立即得到通知。在这个例子中,观察者是 Subscriber,被观察者是 Newspaper。在经典的实现代码中,观察者会将自身注册到被观察者
2015-08-02 13:46:15 296
原创 笔试题4
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。输出最后一个出列的人的编号。请写一段代码模拟实现。
2015-08-02 12:53:04 318
原创 linux笔记
ls –ald:将目录像文件一样显示,列出该目录下的所有文件的详细信息从root进入到用户界面:su – tian在2的基础上,输入exit命令,可以切换到原本的root身份ls –l/:显示根目录内容;ls –l:显示当前目录内容.:表示当前的目录,也可以使用./来表示;..:代表上一层目录,也可以../来表示。从当前目录到
2015-08-01 23:36:32 242
原创 信号槽
所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,用自己的一个函数(成为槽(slot))来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操
2015-08-01 23:32:34 293
原创 emacs笔记
第一部分:启动emacs 直接在命令行输入emacs.第一部分:emacs快捷键说明:C代表Ctrl,M代表Alt。基本光标控制C-v:向前移动一屏M-v:向后移动一屏C-l:重绘屏幕,并将光标置于屏幕中央 上一行 C-p
2015-08-01 23:20:49 258
原创 QT第一个Hello World程序
1.建立工程2.修改main.cpp函数如下:#include "mainwindow.h"#include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QLabel label("Hello World!"); label.show();
2015-08-01 22:16:03 424
原创 网址信息收集器
#include #include #include #include #include #include #include #include #include #include#include#include#include#include#include#includeusing namespace std;struct URLNode{ string
2015-08-01 16:54:34 373
原创 HTTP请求与数据下载
#include #include #include #include #include #include #include #include #include#include#include#include#include using namespace std;int main(){ int sclient; struct sockaddr_in ds_S
2015-08-01 16:12:49 335
原创 DNS域名解析
在实际编程中,可利用gethostbyname()函数来完成DNS的解析查询工作,其原型为:hostent* gethostbyname(const char *strURL);其中strURL是URL的字符串信息,返回值是struct hostent指针类型,struct hostent中通过h_addr字段来存储解析成功后的IP地址。#include #include #inc
2015-08-01 15:55:03 450
原创 C程序将注册信息写入数据库(升级)
1.注册:检查用户名是否已经被用。2.登录:自动检查帐号密码是否匹配。#include #include #include #include #include using namespace std;char logFlag;string name;string password1;MYSQL *conn;MYSQL_RES *res;MYSQL_RO
2015-08-01 11:38:07 625 1
原创 C程序将注册信息保存到数据库
#include #include #include #include #include using namespace std;string name;string password1;void Output(){ char temp; cout<<"Do you have a account?Y/N:"; cin>>temp; if(temp=='N')
2015-08-01 10:00:55 865
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人