C/C++语言
文章平均质量分 61
阿发你好
全套Java/C语言系列教程
展开
-
几种难度比较大的C宏定义
在Linux内核、嵌入式代码等传统的C代码里,会有一些难以识别的宏定义。我记得在eCos, UBoot, FFmpeg有一些比较BT的宏定义,很难读懂。对于C++程序员来说,最好将这种难读的宏定义转成inline函数或模板函数。本章对这些较难的重定义进行汇总。1. 在宏定义中指定义类型参数 #define FPOS_TO_VAR(fpos, typed, var)原创 2012-08-28 18:13:39 · 2314 阅读 · 0 评论 -
C++作业: 贪心法求解问题
/*1. 删数问题: 输入一个数A(例如2838594) 然后输入要删去的个数N(例如 3) 从数A中删除N个位,使得剩下的结果是最小的(如2354)2. 有一容量为200的背包。有8种物品,每种的体积和价值如下表。设每种物品都可以取任意数量,求一种方法使得装进背包的物品的价值总和最大。A B C D E F G H40 55 20 55 30 40 45原创 2013-12-24 12:55:04 · 1695 阅读 · 0 评论 -
分享一个嵌入式httpd服务器开发库 - boahttpd library
一个C接口的开发库,适用于 windows/linux/或其他嵌入式平台,支持CGI扩展,支持多线程。采用面向对象开发,一个应用里可以同时开多个http server,只要端口不同就互不影响。主要应用场景应该是嵌入式应用(所谓boa-server的概念),在需要做一个基本web的设备管理使用。在例子中就是展示,从页面信息的提交、到处理、到结果的返回,里面结合jquery/bootstrap网页技术,可以作出一个精致的设备管理控制页面。原创 2014-07-08 13:50:46 · 3762 阅读 · 1 评论 -
C++跨平台技术 - 线程Thread
跨平台是什么意思呢?先了解一下平台的概念以及平台的差异。我们知道一个VC编译出来的*.exe是不能在Linux运行的,不能运行的原因可以概括为以下几个方面:1. 文件的结构与格式可执行程序是按定义好的格式来组织的, Microsoft 他 GNU对程序文件的定义是不一样的,如GNU使用 ELF格式定义。也就是说,当操作系统(Windows/Linux)试图把一个程序文件加载到内存里准备运行原创 2014-06-13 10:30:27 · 5461 阅读 · 0 评论 -
VC , Linux 静态编译与动态编译 (MD, MT)
首先从Linux下开始讲起,因为Linux编程对程序的理解要清楚一些,相比之下VC就比较容易糊涂。 当动态编译时,你发布的程序体积较小,在运行的时候需要同时提供你用到的dll / so文件。当静态编译时,你发布的程序体积较大,包含所有符号,运行时不需要其他的 dll/so的技术,可以独立运行。静态编译的目的是使发布的程序可以独立运行,不依赖于其他*.so,在技术上是把所有依赖的符号原创 2014-06-13 09:45:54 · 3241 阅读 · 1 评论 -
1000道C语言和C++语言的练习题笔试题及答案 #0000-0050
汇集1000道C语言和C++语言的练习题 (例题、笔试题、编程题、算法设计题),由我亲自配上答案(点此查看)。 语法题我就不出了,那个没意思,看书就可以了。本贴汇集50题 (0000-0050),持续更新...原创 2015-03-18 07:49:18 · 13486 阅读 · 0 评论 -
C/C++ 函数指针与类函数指针
C函数指针int numAdd(int a, int b) { return a+b; } int numMinus(int a, int b) { return a-b; } 直接定义一个函数指针int (*funcTwo)(int, int) = numAdd; 先typedef后使用typedef int (*原创 2013-12-27 16:49:33 · 10065 阅读 · 0 评论 -
浮点数的二进制表示
1. 单精度浮点型目前单精度浮点数float为32位。S: 1bit, 符号位 0表示该float为正数, 1表示为负数E: 指数, 8bits E - 127 = e 实际的指数M: 尾数, 23位 一个实数在存储之前,总是先格式为"规范化形式", 即1.XXX格式, 然后把XXX部分存储(M)。 由于其格式固定,在小数点前固定为一个1,所以原创 2011-11-02 16:24:43 · 2194 阅读 · 0 评论 -
原码与补码
百度: 补码wiki: Two's complement整数的补码 two's complement of an signed integer分数的补码 tow's complement of a fractional number 原码 原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面加了一位符号位(即最高位为符号位)原创 2011-11-01 15:30:33 · 1748 阅读 · 0 评论 -
C++练习:随机构造数组
#include #include #include #include /* 1. 随机构造一个长度为N数组,使得该数组的某个元素的重复了N/2次以上。 2. 统一一个数组中各元素的重复数(出现的次数)*/// n>2才好 int create_array(int arr[], int n){ int i, j; srand(time原创 2014-01-03 20:02:01 · 1644 阅读 · 0 评论 -
C++练习:尾号抽签
#include #include #include /* 在50万个号里(1~500,000),随机挑选N个尾号为55,77的号。 并指出中签率。*/// 随机抽取n个数int random_select(int selected[], int n){ int i; // 全部清空为-1 for(i=0; i<n; i++) selec原创 2014-01-03 19:38:30 · 2220 阅读 · 2 评论 -
#C++高手学园# 内存的故事
内存的故事,是每一个C++选手都不得不去认真了解的故事。即使你不曾刻意去了解过它,它也时时刻刻存在于你的代码里。1. 内存是什么内存是一块线性增长的区域,可以认为地址从0x00000000 - 0xFFFFFFFF的4G个连续的单元,每个单元是1个字节(Byte)。把内存单元的位置称为地址,在C++以指针表示。2. 变量和内存的关系变量是放在内存上的,不同类型的变量占用的内存大小是原创 2012-08-21 14:46:00 · 1150 阅读 · 2 评论 -
C++作业01_02:100元钱,由2元、1元、5角三种面额组成,且一共有100张,试打印出各种组合
#include /* 作业 Ex01_02 邵发 1309班 2013020240 100元钱,由2元、1元、5角三种面额组成,且一共有100张,试打印出各种组合*/int main(){ int i, j, k; for(i=0; i<=50; i++) { for(j=0; j<=100; j++) { for(k=0;原创 2013-11-28 09:54:54 · 2626 阅读 · 0 评论 -
C++作业03_01: 将写的n封信和n个信封全部装错。设Dn为n封信装错信封可能的种类
/* 邵发, 1309班, 2012020240 *//*作业03, 练习1某人马虎,将写的n封信和n个信封全部装错。设Dn为n封信装错信封可能的种类。可用下面的递推公式:Dn=(n-1)(Dn-1+Dn-2)D2=1D1=0编程求Dn,n由键盘输入。*/#include #include #include int Dn(int原创 2013-11-28 09:59:45 · 5747 阅读 · 0 评论 -
C++作业 01_01: 读入一个整数,将各位数上的数拆下来并输出
#include /* 作业Ex01_01:读入一个整数,将各位数上的数拆下来并输出*/// 输入: 一个整数// 输出参数: result, 存放拆解出来各个数字// 返回值: 长度int split2digits(unsigned int num, char result[]){int count = 0;while(1){re原创 2013-11-28 09:52:02 · 6135 阅读 · 0 评论 -
C++作业:将左右孩子互换 / 复制一棵二叉树
/* 邵发, 1309班, *//*12周作业练习1:编写递归算法、将左右孩子互换 (用递归)练习2:编写复制一棵二叉树 (不用递归)*/#include // 定义节点struct Node{ int value; Node* left, *right;};// 练习1:交换左右孩子节点void SwapChild原创 2013-11-28 10:08:00 · 4412 阅读 · 0 评论 -
C++作业02_01: 新浪微博的消息 ID ( MID ) 有字符型和数字型两种形态,可以互相转换
/* 作业第02周, Ex02_01 新浪微博的消息 ID ( MID ) 有字符型和数字型两种形态,可以互相转换。 数字型值是字符型值按照 62 进制转换的结果 。 实现一种单向转换即可 。 */#include #include #include int R62_FromChar(char ch){ if(ch >='0' && ch <= '9')原创 2013-11-28 09:57:05 · 1512 阅读 · 0 评论 -
C++作业02_02: 4 名专家对 4 款赛车进行评论
/* 作业第02周, 邵发, Ex02_024 名专家对 4 款赛车进行评论。 A 说: 2 号赛车是最好的。 B 说: 4 号赛车是最好的。 C 说: 3 号不是最佳赛车。 D 说: B 说错了。 事实上,只有一款赛车最佳,且只有一名专家说对了,其他三人都说错了。请编程输出最佳车号,以及哪位专家说对了*/#include int ca原创 2013-11-28 09:58:15 · 5373 阅读 · 1 评论 -
C++作业:用节点node表示多项式的系数和次数,编程合并两个链式表达的多项式
/* 邵发, 1309班, *//*作业07, 练习1用节点node表示多项式的系数和次数,编程合并两个链式表达的多项式。*/#include #include /* 二项式的项, 用单链表来表示一个二项式 */typedef struct __Node{ double coe; // 系统数 int exp; // 指数 stru原创 2013-11-28 10:05:13 · 1202 阅读 · 0 评论 -
C++作业03_02: 下楼问题。从楼上走到楼下共有h个台阶,每一步有三种走法
/*作业03, 练习2下楼问题。从楼上走到楼下共有h个台阶,每一步有三种走法:走1个台阶,走2个台阶,走3个台阶。问有多少可走的方案。用递归思想编程。*/#include #include #include static int stack[1024]; // 存放每一步的台阶数static int steps = 0;原创 2013-11-28 10:02:41 · 9872 阅读 · 0 评论 -
C++作业: 五人合伙夜间捕鱼,天亮前因劳累在河边相继分别找地方睡去
#include #include /* 邵发, 1309班, *//*作业06, 练习1A,B,C,D,E五人合伙夜间捕鱼,天亮前因劳累在河边相继分别找地方睡去。日上三竿,A先醒来,将鱼平分为五份,把多余的一条扔回河中,拿走一份;B第二个醒来也将看到的鱼平分为五份,扔掉多余的一条鱼,拿走自己的一份;接着C,D,E依次醒来,如法炮制分鱼。问: 五人原创 2013-11-28 10:04:18 · 3200 阅读 · 0 评论 -
C++作业:n只猴子围成一圈,顺时针方向从1到n编号
/* 邵发, 1309班, *//*作业07, 练习2n只猴子围成一圈,顺时针方向从1到n编号。之后从1号开始顺时针方向让猴子从1到m依次报数,凡报到m的出圈,取消资格。下一位再从1开始依次报数,报出m者出圈,最后剩下的就是猴王。问这个猴王原序排在第几位。*/#include #include // 成员结点typedef struct原创 2013-11-28 10:06:23 · 10616 阅读 · 0 评论 -
C++习题:野人与修道士过河问题
河的左岸有3个野人和3个修道士以及一条小船,修道士们想用这条小船把所有的人都运到河的右岸,但又受到以下限制:1、修道士和野人都会划船,但船一次只能载2人;2、在任何岸边,野人数不能超过修道士数,否则修道士将会被野人吃掉。假定野人愿意服从任何一种过河的安排,请规划出一种确保修道士安全的过河方案。以下是犯规情形:- 例如,对面有1个坏,船上有1好1坏,则船到对面后1好2坏,犯规。 #i原创 2013-12-03 08:53:54 · 8406 阅读 · 1 评论 -
C++作业:text格式与binary格式
fopen的打开模式中有text和binary两类,如"rt", "rb",但是在实际工程中,应该只使用binary格式,彻底忘记text模式。为什么呢?因为当以text方式来操作文件时,在windows下和linux的结果是不一样的。你总不想一份代码有2种结果吧?so,永远只用binary模式。- windows下文本文本常以\r\n会换行符。"rt"方式打开时,fread得到的结果是以"\原创 2013-12-10 11:42:50 · 2516 阅读 · 0 评论 -
大小端 Big-Endian 与 Little-Endian
应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句“大端在前”还是“小端在前”能够概括的问题。在cpu, 内存, 操作系统, 编译选项, 文件,网络传输中均有大小端的概念,这些东西加在一起,就很容易把人搞晕。我自己就晕过很久。 为方便说明,再做一些定义:(1) 内存可以存储若干个单元数据的物理设备,每个单元存储1个字节,每个单元有一个地址,其地原创 2011-10-30 16:06:44 · 2741 阅读 · 0 评论