您的位置:首页 > 编程语言 > C语言/C++

王桂林 C++基础与提高 练习题—— 函数做默认参数

2018-08-26 11:35 148 查看

在王桂林老师给的样例上稍微做了调整。

王老师给的样例是:

typedef int(*Comp)(int, int);
void popSort(int *p, int len, Comp com=ascend);

我最终实现为如下的代码:

[code]#include <iostream>
using namespace std;

typedef void(*Exchange)(int &a, int &b);
void ascendFun(int &a, int &b);
void descendFun(int &a, int &b);
Exchange ascend = ascendFun;
void popSort(int *p, int len, Exchange exch=ascend);

void ascendFun(int &a, int &b)
{
int t;
if(a>b)
{
t = a;
a = b;
b = t;
}
}

void descendFun(int &a, int &b)
{
int t;
if(b>a)
{
t = a;
a = b;
b = t;
}
}

void popSort(int *p, int len, Exchange exch)
{
for(int i=0; i<len; i++)
{
for(int j=0; j<len-i-1; j++)
{
exch(p[j],p[j+1]);
}
}
}

int main()
{

int arrInt[]={1,5,2,4,7,9,0,6,8,3};
int len = sizeof(arrInt)/sizeof(int);
popSort(arrInt,len);
for(int i=0; i<len-1; i++)
{
cout<<arrInt[i]<<", ";
}
cout<<arrInt[len-1]<<endl;

popSort(arrInt,len,descendFun);
for(int i=0; i<len-1; i++)
{
cout<<arrInt[i]<<", ";
}
cout<<arrInt[len-1]<<endl;

return 0;

}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: