版权声明:如果是我原创的文章,请转载时,注明是来自我的转帖,加上我帖子的地址。谢谢! https://blog.csdn.net/mengdicfm/article/details/82732209
试题描述
读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30.
输入要求
1行两个正整数x和y,用一个空格隔开,1<=x<=y<=10000,y-x<=100
输出要求
包括y-x+1行,每行一个正整数,按两数到过来的值进行比较决定其大小,然后由小到大输出。
输入样例
22 39
输出样例
30
31
22
32
23
33
24
34
25
35
26
36
27
37
28
38
29
#include<iostream>
using namespace std;
int main()
{
int a[10002],x,y,i,b[10002],t,j;
//a[10002]存储原始数据
//b[10002]存储倒过来的数据
cin>>x>>y;
for(i=x;i<=y;i++)
{
a[i]=i;
}
for(i=x;i<=y;i++)
{
b[i]=0;
t=a[i];
do
{
b[i]=b[i]*10+t%10;
t/=10;
}while(t);
}
//以上for循环,将原始数据每个数据倒过来后,存在新的数组b[10002]中
for(i=x;i<=y;i++)
{
for(j=i+1;j<=y;j++)
{
if(b[j]<b[i])
{
t=b[i];
b[i]=b[j];
b[j]=t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
//以上for循环对倒过来的数据b[100002]进行排序,用选择法按从小到大顺序
//如果有交换数据的地方,对原始数组中相对位置的数据也同样进行交换,
//保证交换后的原始数据就是要输出的数据
for(i=x;i<=y;i++)
{
cout<<a[i]<<endl;
}
return 0;
}