Description
输入10个整数,将他们从小到大排序后输出,并给出每个元素在原来序列中的位置
//将程序需要的代码补全,只提交begin到end部分的代码
#include <stdio.h>
#define N 10
int main()
{
int a[N],b[N],cnt=1,i,j,tmp;
int *p,*p1;
for(p = a, p1=b ;p < a+N;p++){
scanf("%d",p);
*(p1++) = cnt++;
}
for(i = 0;i < N ;i++)
for(j = i+1 ;j < N ;j++){
if(*(a+i) > *(a+j)){
tmp = *(a+i);
/********begin*********/
//Add Code There
/*********end********/
*(b+j) = tmp;
}
}
for(p=a;p<a+9;p++)
printf("%d ",*p);
printf("%d\n",*p);
for(p=b;p<b+9;p++)
printf("%d ",*p);
printf("%d\n",*p);
return 0;
}
Input
输入数据有一行,包含10个整数,用空格分开。
Output
输出数据有两行,第一行为排序后的序列,第二行为排序后各个元素在原来序列中的位置。
Sample Input
1 2 3 5 4 6 8 9 10 7
Sample Output
1 2 3 4 5 6 7 8 9 10
1 2 3 5 4 6 10 7 8 9
HINT
#include <stdio.h>
#define N 10
int main()
{
int a[N],b[N],cnt=1,i,j,tmp;
int *p,*p1;
for(p = a, p1=b ;p < a+N;p++){
scanf("%d",p);
*(p1++) = cnt++;//*p1,b[]里面存放位置信息
}
for(i = 0;i < N ;i++)
for(j = i+1 ;j < N ;j++){
if(*(a+i) > *(a+j)){
/*交换数字位置*/
tmp = *(a+i);
*(a+i)=*(a+j);
*(a+j)=tmp;
/*交换位置信息*/
tmp = *(b+i);
*(b+i)=*(b+j);
*(b+j) = tmp;
}
}
for(p=a;p<a+9;p++)
printf("%d ",*p);
printf("%d\n",*p);
for(p=b;p<b+9;p++)
printf("%d ",*p);
printf("%d\n",*p);
return 0;
}