题目描述
一组以负数结尾的非负数数列,按从小到大排序。输出排序后的数列及其元素在原数列中的位置。若数值相等,则先出现的在前。
输入
一组以负数结尾的非负数(不超过100个)
输出
输出排序后的数列及其元素在原数列中的位置,位置从1开始。
样例输入
10 8 20 9 30 5 40 8 40 7 30 5 -1
样例输出
5(6) 5(12) 7(10) 8(2) 8(8) 9(4) 10(1) 20(3) 30(5) 30(11) 40(7) 40(9)
重点:在不确定的情况下怎么样读数组,用while语句,里面i++,即可得到输入多少个数组
int a[110],b[110],n,i=0;
while(scanf("%d",&n)==1&&n>=0){
b[i]=i+1;
a[i]=n;
i++;
}
另外,用冒泡排序,用两个数组,a【110】,b【110】即可获得一个序号,一个内容
#include <stdio.h>
int main(){
int a[110],b[110],n,i=0;
while(scanf("%d",&n)==1&&n>=0){
b[i]=i+1;
a[i]=n;
i++;
}
for(int j=0;j<i-1;j++){
for(int z=0;z<i-1;z++){
int temp;
if(a[z]>a[z+1]){
temp=a[z];
a[z]=a[z+1];
a[z+1]=temp;
temp=b[z];
b[z]=b[z+1];
b[z+1]=temp;
}
}
}
for(int j=0;j<i;j++){
printf("%d(%d) ",a[j],b[j]);
}
}
发给自己看的哈哈