vc范例大全
范例1,派生类基类的学习。
定义两个基类CDateType,和CTimeType类。然后一个派生类,CDateTimeType派上这两个类
class CDataTimeType:public CDateType,public CTimeType
在基类CDateType和CTimeType中分别定义构造函数和成员函数display()
然后定义派生类的成员函数为调用两个基类中的display函数
void display()
{
CDateType::display();
CTimeType::display();
}
则 ,定义一个派生类对象并直接初始化 CDataTimeType dt(1,1,2008,11,12,12);
再调用display函数,则输出的是当前构造函数初始化的参数1,1,2008,11,12,12
再调用基类中两个函数
dt.SetDate(8,8,2008);
dt.SetTime(20,8,8);
然后在dt.display(),
jieguo wei : 8/8/2008
20:8:8
范例2:使用虚函数实现运行时多态
基类中定义一个成员函数,并设置关键字为虚函数virtual,然后在派生类中,可以重写覆盖虚函数。注意派生类中的虚函数与基类中的一定返回值,参数形式都相同。
再实例化一个基类指针,一个派生类对象,然后该指针指向对象。
不同派生类调用不同虚函数。显示结果。
注意:编程代码一定要仔细。函数后面有括号(),定义要有大括号{}。类没有括号,指针指向对象,应该是figure=&circul.
范例3 使用操作符重载实现编译多态;复数的加法运算
operator关键字代表对运算符的重载。编译时的多态就是指编译器对源程序进行编译时就可以确定所调用的是哪个函数。
复数的加法重载。
1.定义一个复数类,并做实体部虚部函数定义
2.类中声明一个重载运算符
3.类外定义重载运算符。(重载运算符的参数最多有一个。 )
4.正常的运算符使用c3=c1+c2
范例4 。使用函数模版实现不同数据类型的极值函数
就是按照一个模版,不同的参数类型,产生相应的代码。
关键字 template<class ..> class不能丢。
template <class T> //定义函数模版
T Min(T a,T b,T c) //实现模版函数
..注意:字符串string可以这样定义 string str1("one"),str2("two").. 头文件是 string.h
多用三目运算符 return b<c?b:c
范例5 使用c++实现格式化数据的io
常见的是字体敲入:请输入单价:25.8 这样子的编程。
这里学习了使用流操作符来控制输出。cout.width(5)控制了显示的宽度,cout.fill('*')控制了显示的内容。
注意,头文件是 iomanip.h
cout.width(5);
cout.fill('*');
cout.setf(ios::scientific); //setf函数可以设置状态标志 状态标志使用时候必须加ios::
cout.precision(3);
cout<<price*counts<<"(销售额)"<<endl;
cout.setf(ios::showpos|ios::left); //showpos,显示正数的时候加+,left 是显示时候左对齐
范例6实现数字金额的中文大写转换
设置一个对话框,输入中文123,转换后输出壹贰叁
原理:定义单位,个拾佰千万十万百万千万亿十亿百亿千亿。。。
然后读取输入的小写数字如452176中的第一位4,再判断位数,如果是万位之后,要加单位万,否则加亿,否则加整。
最后输出。
注意:cstring类后有好多函数, format,trimleft,getlength。值得学习
范例7 将十进制数转化为二进制数
过程:递归算法。binary(number),
用一个运算符 >>,右移相当于/2, 第一次789,%2的余数为第一项,然后右移相当于除以2,变为394,再调用一次binary,依次递归。
这样层层穷经,则最初运算计算的是最低端的数,得到余数reminder,依次转化为二进制
注意:右移运算符的含义,以及递归的用法
实例8:产生随机数
重点:srand 产生随机数种子,一般是 srand((unsigned)time(NULL)),以时间作为种子
产生随机数,限定范围,rand()%400,代表范围从0到399 rand()%400+60,代表从60到399. rand()%10代表从0到9,rand()%10*0.1代表从0到0.9
范例9:实现排序操作
冒泡排序:
插入排序:从第二位元素开始,后一位依次与前面的位相比较,找到第一个比他小的,就排在这个数后面。s[j]=s[j-1],j--
快速排序:
选择排序:
范例10:创建文本文件并进行读写操作
文本文件的写入,保存,读取。 我应该多练习一些c语言实现的教程。
范例11:用迭代公式求a的平方根。迭代公示为 x1=(x0+a/x0)/2;
则先设置一个初值x=a/2,然后建立一个dowhile循环,限定条件是(fabs(x1-x2)>=le-5);。
范例12,输入一段文本,统计文本的行数 ,单词数目以及字符数目。假定文本没有空行
分析:统计行数:挨个读取字符,当读到一个换行符时候,\n,则代表一行结束。nline++
统计字符:挨个读取字符, 当读到的不是空,不是换行符,不是制表符,不是文本结束符时候,即字符,nch++
统计单词数目:当读到字符时,单词开始,再读到第一个不是字符时候,代表读到一个单词,nword++
三个循环,最外层限定条件是读到字符结束符EOF,再里层循环是读到一个字符,再内层循环是读到的字符时候正在读单词
问题:设置文本结束符号是EOF,说对应的键盘按键应该是CTRL+Z,可是我按了没反应,回车再ctrl+z还是没反应。查了资料说是vc6.0不稳定的原因推荐从vs说。可是我还是喜欢vc。因为我是菜鸟