《面向对象程序设计与VC++实现》--第一章:例题代码
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-1 如何建立和使用引用例题
#include <iostream>
using namespace std;
int main()
{
int someint;
int &rint=someint;
someint=6;
cout<<"someint:"<<someint<<endl;
cout<<"rint:"<<rint<<endl;
cout<<"========================"<<endl;
rint=7;
cout<<"someint:"<<someint<<endl;
cout<<"rint:"<<rint<<endl;
return 0;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-2 内联函数例题
#include <iostream>
#include <iomanip>
using namespace std;
inline int max(int a,int b);
void main()
{
int a=210,b=150,c=20,d;
d=max(a,b);//内联函数代码是被展开而不是被调用的
d=max(d,c);
cout<<"The biggest of"<<setw(5)<<a<<setw(5)<<b<<setw(5)<<c<<" is:"<<d<<endl;
}
inline int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-3 冒泡排序法的程序代码
#include <iostream>
using namespace std;
void main()
{
int a[6]={1,7,3,22,9,5};
int i,j,t,flag;
for(i=0;i<6;i++)
{
flag=0;
for(j=0;j<6-1-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
flag=1;
}
if(flag==0) break;
}
cout<<"result:"<<endl;
for(i=0;i<6;i++)
cout<<" "<<a[i]<<endl;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-3(amelioration) 选择排序法代码
#include <iostream>
using namespace std;
void main()
{
int a[6]={1,7,3,22,9,5};
int i,j,t,k=0,count=0;
for(i=0;i<6-1;i++)
{
for(j=i+1;j<6;j++)
if(a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
count++;
for(k=0;k<6;k++)
cout<<a[k]<<'/t';
cout<<"========"<<"i:"<<i<<"j:"<<j<<"==="<<endl;
}
}
cout<<endl<<"result:"<<endl;
for(i=0;i<6;i++)
cout<<" "<<a[i]<<endl;
cout<<"count:"<<count<<endl;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-3(amelioration) 二分查找法代码
#include <iostream>
using namespace std;
void efFind(int DataArray[],int nSize,int fValue);
void main()
{
int data[6]={1,2,3,4,5,6};
int i;
for(i=0;i<6;i++)
cout<<data[i]<<' ';
cout<<endl;
efFind(data,6,4);
}
void efFind(int dataarray[],int nsize,int fvalue)
{
int flag=0;//查找标记
int nstart=0;//开始元素下标
int nend=nsize-1;//结尾元素下标
int nmid;//二分法中间元素下标
while(nstart<=nend)
{
nmid=(nstart+nend)/2;
cout<<"nstrat: "<<nstart<<"==="<<"nend: "<<nend<<"==="<<"nmid: "<<nmid<<endl;
if(dataarray[nmid]==fvalue)
{flag=1; break;}
if(fvalue>dataarray[nmid])
nstart=nmid+1;
else
nend=nmid-1;
}
if(flag)
cout<<"元素找到了,是第 "<<nmid+1<<" 个"<<endl;
else
cout<<"没有找到元素!"<<endl;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-4 统计的代码
#include <iostream>
using namespace std;
const int size=8;
void main()
{
int i;
int tj[size];//存放统计结果
for(i=0;i<size;i++)
tj[i]=0;//初始化
int tjdata;
cout<<"Please enter data(0--"<<size-1<<"): "<<endl;
cin>>tjdata;
while(tjdata>=0&&tjdata<size)
{
tj[tjdata]++;
cin>>tjdata;
}
cout<<"result: "<<endl;
for(i=0;i<size;i++)
cout<<" "<<i<<": "<<tj[i]<<endl;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-5 歌唱比赛给选手打分的代码
#include <iostream>
using namespace std;
double context(double *parray,int nnum);
void main()
{
double pfsoredata[5][6]=
{
{9.31,9.20,9.00,9.40,9.35,9.20},
{9.71,9.52,9.50,9.66,9.49,9.57},
{8.89,8.80,9.10,9.25,8.90,9.00},
{9.38,9.50,9.40,9.20,9.90,8.90},
{9.30,8.84,9.40,9.45,9.10,8.89}
};
int nrow;
cout.precision(3);//设置小数点位数
for(nrow=0;nrow<5;nrow++)
{
cout<<nrow+1<<" 号选手成绩为:";
cout<<context(pfsoredata[nrow],6)<<endl;
//cout<<context(*pfsoredata+6*nrow,6)<<endl;//也可以这样 但麻烦
}
}
double context(double *parray,int nnum)
{
int ninum;
double fmark,fmax,fmin;
fmark=fmax=fmin=parray[0];
for(ninum=1;ninum<nnum;ninum++)
{
if(parray[ninum]>fmax)
fmax=parray[ninum];
if(parray[ninum]<fmin)
fmin=parray[ninum];
fmark+=parray[ninum];
}
return (fmark-fmax-fmin)/4;
}
//--《面向对象程序设计与VC++实现》
//--11/6/2005 Sun.
//--Computer Lab
//--Liwei
//--例1-6 使用char* 型指针变量写字符串的复制的的代码
#include <iostream>
using namespace std;
void copy_string(char *from,char *to);
void main()
{
char psource[]="I am a teacher.";
char pdestination[]="You are a student.";
copy_string(psource,pdestination);
cout<<psource<<endl;
cout<<pdestination<<endl;
}
void copy_string(char *from,char *to)
{
for(; *from!='/0'; )// 也可加在这里 from++,to++
*to++=*from++;
*to='/0';
}