用同一个函数名对n个数据仅行从小到大排序,数据类型 可以是整形,单精度型,双精度型。用模板函数实现。
#include<iostream>#include<iomanip>
using namespace std;
template<class T>
void Ascending(T s[],T n)
{
T temp;
for(int j=0;j<n-1;j++)
{
for(int i=0;i<n-1-j;i++)
if(s[i]<s[i+1])
{
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
}
}
void scanfs(int a[],int k)
{
cout<<"请输入int型数字:"<<endl;
for(int i=0;i<a[k];i++)
cin>>a[i];
Ascending(a,k);
for(int i=0;i<a[k];i++)
cout<<a[i]<<setw(3);
cout<<endl;
}
void scanfs1(float a[],int k)
{
cout<<"请输入float型数字:"<<endl;
for(int i=0;i<a[k];i++)
cin>>a[i];
Ascending(a,k);
for(int i=0;i<a[k];i++)
cout<<a[i]<<setw(3);
cout<<endl;
}
void scanfs2(double a[],int k)
{
cout<<"请输入double型数字:"<<endl;
for(int i=0;i<a[k];i++)
cin>>a[i];
Ascending(a,k);
for(int i=0;i<a[k];i++)
cout<<a[i]<<setw(3);
cout<<endl;
}
int main()
{
int x;
int a[x],s_f;
float b[x];
double c[x];
cout<<" 1.int "<<endl;
cout<<" 2.float "<<endl;
cout<<" 3.double "<<endl;
cout<<"请输入你想输入的类型的序号:"<<endl;
cin>>s_f;
cout<<"请输入你想输入的数字的个数:"<<endl;
cin>>x;
if(s_f==1)
scanfs(a,x);
if(s_f==2)
scanfs1(b,x);
if(s_f==3)
scanfs2(c,x);
return 0;
}
看不出来哪错了,还请指教、
[此贴子已经被作者于2017-9-27 20:47编辑过]