详细解释此c程序,说明每一步的作用和算法

来源:百度知道 编辑:UC知道 时间:2024/06/29 22:58:52
此程序是一个对输入的数进行排序的程序,请详细解释一下此程序每一步的用途,哪一步可以省略,以及这个思想算法;

mail()
{
int a[11];
int i,j,t;
printf("input 10 numbers : \n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers : \n");
for (i=1;i<11;i++)
printf("%d",a[i]);
}

#include "stdio.h"
//这是一个典型的冒泡排序法。
void main()
{
int a[11];
int i,j,t;
printf("input 10 numbers : \n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
//第小一轮循环比较第一个数和第二个数,如果第一个数大,那交换两数
//第小二轮比较第二个和第三个数,如果第二个数大于第三个数,那么交换。
//可想而知,这样下去一个大循环之后,最大的数就一定落到最下面去了。
//之后在进行第二,第三次大循环。。。。
//排序最后就完成了。大循环次数,也就是i的最大值,由你输入数字个数决定。
//函数没有必要简化,只有必要更复杂。你需要定义变量来去定你输入的数字的个数。
//这样函数的可移植性就增大了
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers : \n");
for (i=1;i<11;i++)
printf(" %d ",a[i]);
}

mail()
{
int a[11]; (定义一个一维整型数组,里面有11个元素)
int i,j,t; (定义三个整型变量)
printf("input 10 numbers : \n"); (输出 input 10 numbers :并换行)
for(i=1;i<11;i++)
scanf("%d",&a[i]);
pr