这是《C语言入门实战》系列的第14篇。
上一篇:C语言入门实战(13):十进制数转二进制
题目
对输入的任意n个(n<=50)1000以内的正整数按升序排序,然后输出,n由用户在程序运行时输入,请编程实现。
要求
每个整数输出时占4个位置,输出格式请采用%4d
。
输入输出格式示例:
输入:6<回车>
10 30 90 20 10 80<回车>
输出: 10 10 20 30 80 90
参考代码
#include <stdio.h>
#include <stdlib.h>
// 对数组a中前n个元素
// 进行选择排序
void sort(int a[], int n) {
int i,j;
//每一轮将当前轮(下标范围[i,n-1])最小的元素交换到最前面
for(i=0;i<n-1;i++) {
for(j=i+1;j<n;j++) {
if(a[i]>a[j]) {
//交换a[i]和a[j]
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
int main(int argc, char *argv[]) {
int n;
int a[50];
scanf("%d", &n);
int i;
for(i=0;i<n;i++) {
scanf("%d", &a[i]);
}
sort(a, n);
for(i=0;i<n;i++) {
printf("%4d", a[i]);
}
return 0;
}
代码复盘
- 数组可以定义为
int a[50];
,然后根据输入的个数n(n<50)
,把n个数据存放在数组的前n个元素中,再对a[0]~a[n-1]
进行排序。 - 定义了一个排序函数
void sort(int a[], int n) {}
,内部通过选择排序算法对数组a中的前n个元素进行从小到大排序。