原题:
题目描述
输入10个整数,将它们从小到大排序后输出,并给出现在每个元素在原来序列中的位置。
输入
输入数据有一行,包含10个整数,用空格分开。
输出
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
示例输入
1 2 3 5 4 6 8 9 10 7
示例输出
1 2 3 4 5 6 7 8 9 10 1 2 3 5 4 6 10 7 8 9
分析:
结构体——水题又一枚~~~
原码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct N
{
int m;
int n;
} p[10];
int cmp(N q,N w)
{
return q.m<w.m;
}
int main()
{
while(scanf("%d",&p[0].m)!=EOF)
{
for(int i=1; i<10; i++)
{
scanf("%d",&p[i].m);
}
int j=1;
for(int i=0; i<10; i++)
{
p[i].n=j;
j++;
}
sort(p,p+10,cmp);
for(int k=0; k<9; k++)
{
printf("%d ",p[k].m);
}
printf("%d\n",p[9].m);
for(int k=0; k<9; k++)
{
printf("%d ",p[k].n);
}
printf("%d\n",p[9].n);
}
return 0;
}