代码改变世界

随笔分类 -  C

指尖上的代码[C语言版]-<6>

2012-08-12 14:50 by java线程例子, 292 阅读, 收藏,
摘要: <6> 数据结构---线性表的顺序存储结构分析:代码:#include "stdio.h" #include "stdlib.h" #define M 20 /*自定义数组大小*/ #define Type "%d" typedef int DataType; /*为现有类型创建同义词,自己可更改数据类型*/ typedef struct { DataType array[M]; /*数组*/ int subscript; /*数组最后一个元素的下标*/ ... 阅读全文

指尖上的代码[C语言版]-<5>

2012-08-10 01:24 by java线程例子, 163 阅读, 收藏,
摘要: <5> 十进制转换为二进制、八进制、十六进制。分析: 代码:#include "stdio.h" /* 函数声明 */ void GetBibary(long int x); void GetOctal(long int x); void GetHexadecimal(long int x); /* 主函数 */ int main(void) { long int x; printf("我会帮您把大于等于零的十进制数转换成二进制、八进制、十六进制数。\n"); printf("请输入您想要转换的十进制数:"); scanf 阅读全文

指尖上的代码[C语言版]-<4>

2012-08-07 21:34 by java线程例子, 203 阅读, 收藏,
摘要: <4>已知有三根针分别用A,B,C表示,在A针中自上而下从小到大放n个盘子,现要求把所有的盘子从A针全部移到C针,移动规则是:使用B针作为过度针,每次只移动一块盘子,且每根针上不能出现大盘压小盘,找出移动次数最小的方案.(汉诺塔问题)分析:代码:#include "Stdio.h" #include "Conio.h" /* 声明函数 */ void HanoiTower(int n,char A,char B,char C); int main(void) { int n; printf("Please input n(1-64) 阅读全文

指尖上的代码[C语言版]-<3>

2012-08-07 15:42 by java线程例子, 159 阅读, 收藏,
摘要: <3> 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个; 第二天早上又将剩下的桃子吃掉一半,又多吃了一个; 以后每天早上都吃了前一天剩下的一半零一个; 到第10天早上想再吃时,见只剩下一个桃子了; 求第一天共摘了多少个桃子?分析:代码 :#include "Stdio.h" #include "Conio.h" int main(void) { int Day,Quantity1,Quantity10=1; for(Day=9;Day>0;Day--) { Quantity1=(Quantit... 阅读全文

指尖上的代码[C语言版]-<2>

2012-08-07 14:17 by java线程例子, 163 阅读, 收藏,
摘要: <2> 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?分析:代码:#include "Stdio.h" #include "Conio.h" #include "Math.h" int main(void) { /* init_h表示初始高度 sum用来记录球所经过的距离 h表示球反弹后的距离*/ float init_h=100,sum=0.0,h; /* n表示球第n次着地*/ int n; for(n=1;n<=10;n++) { if( 阅读全文

指尖上的代码[C语言版]-<1>

2012-08-06 21:42 by java线程例子, 291 阅读, 收藏,
摘要: 这段时间没什么事,所以就决定写一系列的Blog来温故和提升自己的编程水平。 前段时间,有个叫“舌尖上的中国”的纪录片比较火,我也小山寨一下,把本系列的Blog取名为“指尖上的代码”,来记录自己的成长,并且我准备坚持写下去,希望自己能天天进步。(声明:本系列的Blog中的大部分实例来自网上,有一些我做了小小的改编,希望对能共同学习的人有小小的帮助!)<1>有0、1、2、3个数字,能组成多少个互不相同且无重复数字的三位数?都是什么?分析:代码:#include "Stdio.h" int main(void) { int i,j,k,sum; sum=0; prin 阅读全文

PSP应用开发入门

2012-06-25 17:32 by java线程例子, 294 阅读, 收藏,
摘要: 一、PSP平台介绍硬件架构SDK官方的SDK网上找不到,可能是收费的,我们可以使用第三方的SDK。据网上介绍,一般有两种方法:psptoolchain+cygwin;devkitpro(不需要cygwin)。这里采用第二种方法。开发语言devkitpro中自带的SDK中都是C语言的头文件和库文件,所以使用C语言进行开发。二、开发环境搭建从http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/下载并安装devkitPro开发包。三、编译示例程序在命令行CMD中进入D:\devkitPro\devkitPSP\p 阅读全文

c语言学习-猜数字游戏

2012-06-04 14:11 by java线程例子, 270 阅读, 收藏,
摘要: /*猜数字游戏*/ #include "stdio.h" #include "stdlib.h" //产生随机数要用到的头文件 main() { int x,count=5,number; char answer; system("graftable 936"); clrscr(); randomize(); x=random(100)+1; /*产生1-100之间的随机数*/ printf("\t\t\t\t[猜数字游戏]\n"); printf("--------------------------- 阅读全文

学习Google Chrome源码

2012-06-02 09:52 by java线程例子, 371 阅读, 收藏,
摘要: 读《Google Chrome源码剖析》笔记,学习Chrome中优秀的设计思想。原文地址:http://www.ha97.com/2911.html零、【序】1.关于开源“开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀上”。教材玩具的确铺天盖地的,到处的Hello World示例和各种教材习题。工业垃圾代码充斥?想想四年来的所谓企业级开发,也确实如此。或是为了适应快速变更的业务开发充满Bug的代码,或是小心翼翼地担心影响所谓的Business而不敢冒险,一味地拷贝从前的代码。企 阅读全文

用Qt开发简单的浏览器(二)

2012-05-24 22:47 by java线程例子, 2116 阅读, 收藏,
摘要: 一、功能改进经过对QtWebKit的一些学习,对之前的浏览器进行一些改进:1.增加分页显示多个网页的功能。每个分页都是一个QWebView控件,实现对多个网页的加载。2.加入欢迎主页。学习如何创建Qt资源文件,从本地读取欢迎主页的HTML。3.添加了前进Forward和后退Back按钮。4.此外还明确了SIGNAL和SLOT的命名,SLOT都以handleXXX开头与SIGNAL区分开。二、Qt资源文件Qt可以很方便的通过资源文件来管理各种资源,就像在VS中创建资源文件一样。项目结构如下:在Qt Creator中创建四个资源文件html.qrc,script.qrc,style.qrc,res 阅读全文

用Qt开发简单的浏览器(一)

2012-05-20 09:00 by java线程例子, 653 阅读, 收藏,
摘要: 1.代码实现工程目录结构如下:AddressBar类包含了地址栏和按钮两个控件,将地址栏回车和按钮点击信号与goToSite()槽连接。当回车和点击事件发生时,goToSite()将获得Url地址并发送go(QUrl)信号。addressbar.h#ifndef ADDRESSBAR_H #define ADDRESSBAR_H #include <QWidget> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> #include <QUrl> #i 阅读全文

《C++ GUI Qt4编程》第一章、Qt入门

2012-05-19 22:26 by java线程例子, 347 阅读, 收藏,
摘要: 1.1 Hello Qt创建hello目录,新建源文件hello.cpp:#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); }进入hello目录,qmake -project生成一个与平台无关的项目文件hello.pro。TEMPLAT 阅读全文

LPDIRECTDRAW7编译错误的解决方法

2012-05-09 22:58 by java线程例子, 237 阅读, 收藏,
摘要: 用DirectX 7.0 SDK开发,编译时碰到了以下错误:syntax error : missing ';' before identifier 'lpDD'error C2501: 'LPDIRECTDRAW7' : missing storage-class or type specifiers打开工具->选项,工程已经包含SDK的Include和Lib文件夹,为什么还有错误?原来是Windows自带的DirectX版本过低,需要提高我们安装的SDK文件夹目录的优先级。注意图中的向上箭头按钮。调整优先级后可以通过正常编译了。 阅读全文

《Windows游戏编程大师技巧》五、DirectX基础知识和令人生畏的COM

2012-04-29 21:40 by java线程例子, 483 阅读, 收藏,
摘要: 所有的DirectX组件都是以COM实现的,两者环环相扣。DirectX基础DirectX可能会让身为程序员的你丧失些对硬件的控制能力,但是DirectX比Windows系统自带的GDI或MCI快上很多倍,并且也更稳定。在编写Windows游戏的过程中,使用DirectX的方法要干净和优雅得多。你只要向DirectX发出命令,它就会帮你处理所有细节问题。无论是显卡、声卡、键盘鼠标还是网卡,只要是DirectX支持的硬件,就可以被你的程序使用而无需知道其中的奥秘。DirectX是如何工作的呢?通过COM技术,以及一套由微软和硬件厂商共同编写的驱动库就可以实现。硬件商必须遵守微软的协议才能开发与硬 阅读全文

《Windows游戏编程大师技巧》 T3D游戏控制台程序实例及第一部分总结

2012-04-22 15:20 by java线程例子, 190 阅读, 收藏,
摘要: 现在我们要创建一个Windows外壳程序,将单调的Windows运行细节隐藏,Win32/DirectX编程就变得类似于32位DOS的编程过程。在构建好的代码结构下,我们只需关心Game_*几个有关游戏逻辑的方法就行了。1.Game_Init()Game_Init()在WinMain()中的主事件循环之前被调用,并且仅调用一次。它用于初始化游戏所需的各种资源,如获得资源设备描述表DC。2.Game_Main()Game_Main()在主事件循环中每次处理Windows消息之后被调用一次,应当在Game_Main()中处理所有的图像渲染、声音、人工智能等内容。需要注意的是你必须仅绘制一帧画面然后 阅读全文

《Windows游戏编程大师技巧》 四、GDI、控件和突发奇想

2012-04-22 09:11 by java线程例子, 197 阅读, 收藏,
摘要: 本章是纯粹讲述Windows编程的最后一章。谢天谢地!高级GDI绘图GDI比起DirectX来实在太慢了,那为什么还要了解?1.GDI功能很全,并且是Windows与生俱来的渲染引擎。2.如果想创建任何工具或标准应用程序,都要用到GDI。3.GDI与DirectX混合使用,来仿真DirectX尚未实现的函数。到底什么是图形设备描述表?图形设备描述表HDC保存了视频卡的各种信息,访问各种GDI函数时都要用到。对于使用GDI的任何函数,它都是必须的。并且它还保存了设置,这样省去了GDI函数调用时的许多参数。画笔:用于画线条和轮廓。画刷:用于填充任何闭合的对象。在你的系统配置中有许多画笔和画刷,但是 阅读全文

《Windows游戏编程大师技巧》三、Windows高级编程

2012-04-18 21:40 by java线程例子, 235 阅读, 收藏,
摘要: Windows编程很绝的地方在于:你不用了解太多细节,就可以完成很多工作。使用资源资源就是你的程序代码结合在一起的多块数据,可以被程序本身在运行时加载。资源应当也放在程序的.EXE文件中的原因是:1.同时包含代码和数据的.EXE文件更容易发布。2.外力不容易任意删改程序的数据文件(如.BMP和.WAV文件)。对于想编译进程序中的数据类型没有限制,下列这些预定义的资源类型就可以满足大部分需要:图标 - 小的位图文件光标 - 鼠标指针的位图字符串 - 可以硬编码在代码中,也可以集中放在这声音 - 大部分Windows程序都使用.WAV格式位图 - 这是标准的位图,使用.BMP扩展名对话框 - 也可 阅读全文

《Windows游戏编程大师技巧》二、Windows编程模型

2012-04-14 15:26 by java线程例子, 195 阅读, 收藏,
摘要: 这一章开篇语对我有很大的启迪,一直对Windows下编程有着畏难心理。太庞大的平台和体系,太多的API和术语,太快的技术换代节奏,而我是个想要把握住本质掌握住基础才会有安全感和成就感的程序员,所以我只乐于学习Win32 API。而现在受到这本书的启发,对Windows编程的畏惧少了一些,也有了一些学习计划:1.窗体界面 -> Win32\MFC (简单了解界面消息处理机制吧,实在是不擅长画UI,MFC也有些难)2.网络编程 -> Winsock (这是我比较想学的)3.Web控件 -> ActiveX (不了解,应该学学)4.动画游戏 -> GDI\DirectX (感 阅读全文

《算法导论》第15章 动态规划 (1)装配线调度

2012-04-14 08:56 by java线程例子, 379 阅读, 收藏,
摘要: 动态规划通常用于有很多种可行解,而找出最优解的问题。具体可分为4个步骤:1)描述最优解的结构。2)递归定义最优解的值。3)自底向上计算最优解的值。4)由最优解的值构造出最优解。下面通过一个具体问题来看究竟如何用动态规划算法来解决问题。Colonel汽车公司在有两条装配线的工厂里生成汽车。每一条装配线上有n个装配站,两条生产线上相同位置的装配站功能相同,但所需时间不同,并且汽车底盘在两条装配线间转移要花费一定的时间。如下图所示两条生产线。这里首先尝试下下一章的贪心算法,在每一步都取最省时间的装配站。首先进入装配线1时间为2 + 7小于装配线2的4 + 8,因此进入装配线1。之后装配站2的时间9大 阅读全文

《算法导论》第14章 数据结构的扩张 (2)

2012-04-09 23:03 by java线程例子, 176 阅读, 收藏,
摘要: 在上一节中,我们为树结点添加size域表示每颗子树的大小,即包含的结点个数,扩张了二叉查找树为其增加顺序统计量的查找功能。更为自然的想法是直接添加顺序统计量rank域到每个树结点上。这一节我们就来看下在这样的设计下,如何扩张来完成上一节相同的功能。当我们插入一个结点到二叉树中,假设它的顺序统计量为5,那么之前二叉树中顺序统计量大于5的结点都要更新。也就是说插入一个新结点到对应的位置后,要不断地查找其后继,完成rank域的更新。所以可以结合习题14.2-1,再添加两个指针域prev和next指向前趋和后继,使查找前趋和后继在O(1)内完成。下面来看具体代码。// 添加三个新域 typedef s 阅读全文