80后脱口秀赖宝:c++初学者碰到的问题~

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 16:40:53
任意输入一个4位数,调用一个自定义函数输出该函数的各位数字组成的最大数.例如:输入1593,则输出9531.

#include<iostream.h>
void main()
{
int num=0;
cout<<"输入一个四位数:";
cin>>num;
cout<<endl;
cout<<"排列后的结果是:"<<endl;
int elem[4];
elem[0]=(int)(num/1000);
elem[1]=(int)((num/100)-10*elem[0]);
elem[2]=(int)((num/10)-100*elem[0]-10*elem[1]);
elem[3]=(num%10);
int temp=elem[0];
for(int i=0;i<=3;i++)
{
for(int j=i;j<=3;j++)
{
if(elem[i]<=elem[j])
{
temp=elem[i];
elem[i]=elem[j];
elem[j]=temp;
}
else continue;
}
}
for(int k=0;k<=3;k++)
{
cout<<elem[k];
}
cout<<endl;
}

#include <iostream.h>

/************************************************************************
Make sure the "<" can be used between SomeType
************************************************************************/
template <class SomeType>
long Partition(SomeType data[], long low, long high)
{
SomeType pivot = data[low];

while (low < high)
{
while ( low < high && !(pivot < data[high]) )
high --;
if (low < high)
data[low ++] = data[high];

while ( low < high && !(data[low] < pivot) )
low++;
if (low < high)
data[high --] = data[low];
}
data[low] = pivot;

return low;
}
template <class SomeType>
void Qsort(SomeType data[], long low, long high)
{
long cut;
if(low < high)
{
cut = Partition(data,low,high);
Qsort(data,cut+1,high);
Qsort(data,low,cut-1);
}
}

int main()
{
char number[5];

cin >> number;

Qsort(number, 0, 3);

cout << number << endl;
return 0;
}

按字符串读入数据,然后按各位排序即可,其中使用了快速排序模板,初学者只需要知道就是实现一个排序功能就可以了!