C++面向对象程序设计之C++的初步知识(6)

int main()
{
//string name[5];                //定义一个字符串数组,它包含5个字符串元素
string name[5]={"Zahng","Li","Fan","Wang","Tan"};        //定义一个字符串数组并初始化
cout<<sizeof(string)<<endl;                //书上为4,实际两个都为16
cout<<sizeof(name)<<endl;                //书上为20,两个都为80
sizeof(string);                            //空
sizeof(name);                            //空

system("pause");
return 0;
}

例1.15 输入三个字符串,要求按字母从小到大顺序输出

//暂不列举。

1.3.11 动态分配/撤销内存的运算符new和delete

C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数(为了兼容C,任然保留)。例如:

new int;        //开辟一个存放整数的空间,返回一个指向整型数据的指针

new int(100);        //开辟一个存放整数的空间,并制定该整数的初值为100

new char[10];        //开辟一个存放字符数组的空间,该数组有10个元素,返回一个指向字符数据的指针

new int[5][]4;        //开辟一个存放二维整形数组的空间,该数组大小为5*4

float *p=new float(3.14159)        //开辟一个存放实数的空间,并指定该实数的初值为3.14159,将返回的指向实型数据的指针赋给指针变量p

new运算符使用的一般格式为:new 类型[初值];  用new分配数组空间时不能指定初值。

delete运算符使用的一般格式为:delete []指针变量;例如撤销例子5开辟的存放实数的空间:deletep;

new和delete是运算符,不是函数,因此执行效率高。用了new后要用delete释放空间。

习题

注:因为只是习题而已,没有写的多认真,有些部分是复制前面写的代码,故仅供参考。

1.略

2.略

3.略

4.略

5.略

6.略

7.求2个或3个数中的最大值,用带有默认参数的函数实现。

#include<iostream>
using namespace std;
int max_3(int a,int b=1,int c=2)
{
if(b>a)a=b;
if(c>a)a=c;
return a;
}
int max_2(int a,int b=2)
{
if(b>a) return b;
else return a;
}
int main()
{
//重载函数不能带默认值
int a,b,c,d,e;
cout<<"如果要比较三个数字中的最大数,请在前三位输数字,后两位输0"<<endl;
cout<<"如果要比较两个数字中的最大数,请在前三位输0,后两位输数字"<<endl;
cin>>a>>b>>c>>d>>e;
if(a!=0,b!=0,c!=0) cout<<"max_3="<<max_3(a,b,c)<<endl;
else if(d!=0,e!=0) cout<<"max_2="<<max_2(d,e)<<endl;
//下面这两个符合默认参数的题意,但暂时无法做到从键盘获取参数
cout<<"max_3="<<max_3(0)<<endl;
cout<<"max_2="<<max_2(77,88)<<endl;
system("pause");
return 0;
}

求2/3个数的最大值,带默认参数

8.输入两个整数,按从大到小顺序输出,要求使用变量的引用。

#include<iostream>
using namespace std;
void sort(int &a,int &b)
{
int temp;
if(a<b) {temp=b;b=a;a=temp;}
cout<<a<<","<<b<<endl;
};

int main()
{
int a,int b;
cin>>a>>b;
sort(a,b);

system("pause");
return 0;
}

用引用实现两个数的从大到小排序

9.对3个变量按从小到大排序,要求使用变量的引用。

注:或能力有限,感觉本题题意不清,是3个什么变量?是整型,实型,长整型,浮点型,双精度,字符,亦或是字符串?本例中使用的是模板函数,虽类型不明确,但能使用函数解决大部分的类型。

#include<iostream>
using namespace std;
template<typename T>          //模板声明,其中T为类型参数
void sort(T &a,T &b,T &c)                    //定义一个通用函数,用T做虚拟的类型名
{
int temp;
if(a>b) {temp=a;a=b;b=temp;}
if(c<a) cout<<c<<','<<a<<','<<b<<endl;
    else if(c<b) cout<<a<<','<<c<<','<<b<<endl;
        else cout<<a<<','<<b<<','<<c<<endl;
}

int main()
{
int i1=8,i2=5,i3=6;
double d1=82.2,d2=53.4,d3=69.7;
long g1=78238,g2=-365,g3=45676;
char c1='c',c2='h',c3='d';

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/704a395fc66352bfe16e015f30ba1748.html