1:求已知个数的数组的排序
#define _CRT_SECURE_NO_WARNINGS 1 //这句不是所有的代码都要加,要看你用的是什么
#include <stdio.h>
int main(void)
{
int a[100];
int n,i,j,e;
a[0] = 0; //赋初值
e = 0;
scanf("%d", &n); //输入需要排序的数组的个数
for (i = 0; i < n; i++) //输入的格式为1 2 3···(每个数之间用空格间隔)
scanf("%d", &a[i]); //输入要排序的数组
for (i = 0; i < n-1; i++) //这个循环是为了让里面那个循环运行n-1次
{
for (j = 0; j < n-1; j++)
{
if (a[j] < a[j + 1]) //若前一项比后一项小则将两者调换
{
e = a[j];
a[j] = a[j + 1];
a[j + 1] = e;
}
} //运行完一次就将前面n-i个数中的最小值放到第n-i个
}
for(i=0;i<n;i++) //输出这组由大到小排列的数
printf("%d ", a[i]);
return 0;
}
2:求未知数组的排序
#include <stdio.h>
int main(void)
{
int a[100];
int n,i,j,e;
a[0] = 0; //赋初值
e = 0;
n = 0;
do{
scanf("%d",&a[i]);
i++;
} while(getchar()==' '); //每个数间用空格间隔直到输入回车结束循环
n=i; //n为该数组的个数
for (i = 0; i < n-1; i++) //这个循环是为了让里面那个循环运行n-1次
{
for (j = 0; j < n-1; j++)
{
if (a[j] < a[j + 1]) //若前一项比后一项小则将两者调换
{
e = a[j];
a[j] = a[j + 1];
a[j + 1] = e;
}
} //运行完一次就将前面n-i个数中的最小值放到第n-i个
}
for(i=0;i<n;i++) //输出这组由大到小排列的数
printf("%d ", a[i]);
return 0;
}
代码中的do-while是可以替换的可以换成其他循环结构。