//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int n,num[200];
memset(num,0,sizeof(num));
//读取
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++)
{
scanf("%d",&num[i]);
}
//排序
for(int i=1;i<=n;i++)
{
if(num[i]<num[i-1])
{
int temp=num[i];
int j;
for(j=i-1;temp<num[j];--j)
num[j+1]=num[j];
num[j+1]=temp;
}
}
//输出
for(int i=1;i<=n;i++)
{
printf("%d ",num[i]);
}
printf("\n");
}
//system("pause");
return 0;
}
本题使用的是直接插入排序
有一个问题需要注意:本题题目中要求的输出,每个数字之间有一个空格,原以为使用gets()来解决,后来经人提醒,可以直接使用scanf来读取。
注:system("pause")的加入是为了使程序在输出时暂停,以方便调试。头文件是 stdlib.h。
注2:数组重置的函数memset的头文件是string.h。