PTA 7-224 sdut-C语言实验-排序问题
输入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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 M
代码:
#include <stdio.h>
int main(){
int integer[10], _integer[10] = {1,2,3,4,5,6,7,8,9,10};
int temp, _temp; //临时变量
int lenth = sizeof(integer) / sizeof(integer[0]); //数组长度
for(int i = 0; i < lenth; i++){ //遍历数组, 将每次输入的数据储存再数组中
scanf("%d", &integer[i]);
}
for(int i = 0; i < lenth - 1; i++){ //循环次数(即待比较的数)
for(int j = 0; j < lenth - 1 - i; j++){ //比较相邻的两个数
if(integer[j] > integer[j + 1]){ //比较大小并交换值
temp = integer[j + 1];
integer[j + 1] = integer[j];
integer[j] = temp;
_temp = _integer[j + 1]; //原来位置被交换后
_integer[j + 1] = _integer[j];
_integer[j] = _temp;
}
}
}
for(int i = 0; i < 10; i++){ //输出第一行的数
if(i == 9){
printf("%d\n", integer[i]);
break;
}else
printf("%d ", integer[i]);
}
for(int i = 0; i < 10; i++){ //输出第二行的数
if(i == 9){
printf("%d\n", _integer[i]);
break;
}else
printf("%d ", _integer[i]);
}
return 0;
}
解题思路:
step1:遍历数组(将每次输入的数储存到数组中)
step2:冒泡排序并将(排序后各个元素在原来序列中的位置)储存到第二个数组中
step3:输出两个数组
归属知识点:
数组
循环结构
选择结构