将任意个数按大小顺序输出
程序代码:
#include<stdio.h> int main() {//主函数开始 int a[20]; int i,t,m,j,n,p; printf("please input the length of array(<=20):\n"); scanf("%d",&t); printf("please input %d datas:\n",t); scanf("%d",&a[0]);//单独输入a[0],作为用于比较的最基础的数。(为a[1]提供比较) for(j=1;j<t;j++) {//A循环开始 scanf("%d",&a[0]); for(i=0;i<j;i++)//注意:这里应为i<j,不是i<t! {//B循环开始 if(a[j]>a[i])break;//逐个比较,找到新数据的正确位置a[i],跳出B循环 }//B循环结束 m=j; p=j+1; do {//C循环开始(a[i]及其之后的数据,包括a[j],每个数据都往后挪一位(a[x+1]=a[x])) n=m+1; a[n]=a[m];//从后面开始,把数据后挪 m=m-1; }while(m>=i);//C循环结束 a[p]=a[i];//把新数据放入正确的位置a[i](由于往后挪一位,新数据由a[j]移至a[j+1]即a[p]) }//A环结束 for(j=0;j<t;j++) printf("%d\n",a[j]);//数据输入时已经排好大小放入对应的a[]中,按a[0]、a[1]、a[2]...顺序输出即可 return 0; }//主函数结束
为什么运行的结果会乱码,输出的数都变成一些很奇怪、很大的数?求教!谢谢!