博文
约瑟夫的问题(面向设计,数组,链表)(转)(2006-05-08 23:52:00)
摘要://一群小孩围成一圈,任意假定一个数m,从第一个小孩起,顺时针方向数,每数到第m个
//小孩时,该小孩便离开。小孩不断离开,圈子不断缩小。最后剩下的小孩便是胜利者.
用面向对象实现:
//-------------------------
// ringx.h
//-------------------------
struct Boy
{
int code;
Boy * next;
};
class Ring
{
public:
Ring(int n);
void Count(int m);
void PutBoy();
void ClearBoy();
void Display();
~Ring();
protected:
Boy * pBegin;
Boy * pivot;
Boy * pCurrent;
};
//----------------------
// ringx.cpp
//----------------------
#include<iostream.h>
#include<iomanip.h>
#include"ringx.h"
Ring::Ring(int n)
{
pBegin=new ......
C/C++头文件一览 (2006-04-04 11:52:00)
摘要:
C/C++头文件一览
C、传统 C++
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> //宽字符分类
//////////////////////////////////////////////////////////////////////////
标准 C++ (同上的不再注释)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#incl......
C++好的网站(2005-12-22 13:24:00)
摘要:http://www.ztenc.com.cn/ 中兴软件(南昌)技术有限公司
http://www.cppfans.com/ C++爱好者
http://www.rayoko.com/ C++学习网
http://www.cplusplus.com/ The C++ Resources Network
http://www.chinabcb.com/ china bcb
http://tvu.yxtc.net/hbj/px/C++_language/# C++ 视频教学学习
http://www.mudi.com.cn/blog/user1/2/archives/2005/108.asp c++ 资料下载
http://www.cppblog.com/ C++ blog
http://www.4oa.com/Article/html/6/33/
http://tech.163.com/special/C/0009159F/Cs.html c++ study
http://download.chinaitlab.com/special/CYYdowmload.htm c++c++ 资料下载
http://morningspace.51.net/resource/stlintro/stlintro.html STL---C++
http://www.51cto.com/html/2005/0923/3641.htm vc/c++
http://cpp.ysu.edu.cn/ c++兴趣小组
http://www.7880.com/Info/Info-9-Time-DESC-1.html c/c++ 编程开发
http://blog.csdn.net/emag_cpp csdn c......
MFC-你的类到底帮我做了什么?(2005-12-20 18:14:00)
摘要:
MFC 你的类到底帮我做了什么?(理解什么是句柄?)
MFC帮我们和Windows对话,MFC是个服务公司
MFC相当于一些第三产业,比如餐馆.比如企业ISO9000认证咨询公司.比如营业执照代办机构.
所有的原因是因为这些东西都很复杂,所以我们引进了MFC来帮我们的忙.
其实跟认证咨询公司帮我们准备报表,然后帮我们联系认证机构一样.MFC就是通过API和WINDOWS这个上帝进行交流.我们自己可能记不住怎么和上帝聊天的规范,但MFC知道那些流程.如果你自己会讲你在MFC帮你说的时候你也可以自己插嘴说两句,这样直接一点.
先讲讲跟WINDOWS上帝说话的时候的要素. 最关键的是句柄(内存地址),因为在WINDOWS的概念里只有内存空间地址. 比如你求WINDOWS帮你在你的程序的窗口上写一个字(记住,其实是WINDOWS帮你写的,别以为写上几个代码就会在屏幕上写字),那你得告诉WINDOWS 你的窗口内存的地址,然后告诉它在什么坐标上. 这个时候WINDOWS 就找到那个内存地址,然后 通过坐标计算出相对空间位置加上内存地址, 这时候就在那里写上字. 然后其他的部门(显示驱动程序)会把字写到屏幕上.
上面的操作,如果你自己跟WINDOWS说,那得做两件事,第一件是获得句柄,第二件申请.
如果叫MFC做,他在VIEW里面给你一个CDC指针,你只要叫CDC的成员函数帮你TEXTOUT就可以了,句柄它会帮你搞定.
程序是一个进程,你的程序分配到的内存被包成一个整体,你在程序里得到的指针是从0开始的相对指针,句柄是绝对指针.句柄是在你向WINDOWS对话的时候用的.平时自己用的时候只要用相对指针就可以了.MFC就是帮你隐藏绝对指针,让你觉得你的世界是从0开始的完美的世界.可偏偏有些时候还是被我们发现,老鸟觉得很自然,新手就困惑了,为什么要用句柄.如果你想让WI......
C++的沉迷与爱恋(2005-12-19 20:00:00)
摘要:C++的沉迷与爱恋 (转载)
每年的 09/28 於我都是一个特殊的日子 -- 不只是因为教师节。今年很特殊地没有普天同庆,那麽我就写篇文章自己庆祝一下好了。
我於今年七月发表了一本着作 <多型与虚拟> 和一本译作 <深度探索 C++ 物件模型> ,获得很大的回响。这些作品都不是针对 C++ 的完全初学者所写,但从初阶到高阶为数众多的 C++ guy,热情地表达了他们对这些主题的喜悦。
在许多来信中,我看到一些有趣的现象,也感受到一些值得整理下来的想法。所以,根据我个人的学习过往、我的教学经验、以及周遭朋友的心得交流,写下这篇文章,或可为後学者戒。
●<多型与虚拟> 序言节录
首先让我节录 <多型与虚拟> 一书序言:
<多型与虚拟> 序 节录(侯俊杰/松岗/1998/07)
一般而言,C++ 是一个难学易用的语言。
C++ 的难学,初始在於其重重的布幕,布幕之中编译器对我们的程式码做了太多的手脚,使我们惯於循序思考的工程脑袋一无所措。及长,又面临新的思维模式,使我们必须扭转惯常的思考习惯。
C++ 的易用则在於其巨大的弹性,能够以多型(polymorphism)、虚拟(virtual)、模板(template)、泛型(generalization)等种种型式,让既有的码去处理未知的、未来的资料型态。
当然,易用必须先能用。用不好或不能用的话,「写 C++ 程式」最後就成了只是「使用 C++ 编译器」,这是大家常拿来彼此调侃的笑话。
在「难学」的背景下,「易用」是使我们依然前仆後继的动力。愈来愈多的大学资讯科系把 C++ 开在大一课程,这虽然说明 C++ 是多麽地重要,可也苦了资讯新兵们。
其实「难学」的最大症结在於,很难得有一本书,能够一针见血地指出多型与虚拟的重要性;在我们粗具语法基础之後,直接把我们导引到最核心最重要的思想,并且在建立这个思想的过程中,提供足够的必要基础。
●困难度之一
「C++ 是个难学易用的语言」,这句话相信很多人心有戚戚。C++ 的学习难度,一在於语言本身太多的「幕」,一在於 "paradigm shift" (思考模式的移转)。
传统循序语言如 C, Pascal, Basic, Fortran...,除了......
学习c++的50条忠告(初学者必看)(2005-12-19 19:03:00)
摘要:学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C+......