好了,再来这样一道问题,我给你10个数,分别是0,1,2,3,4,5,6,7,8,9。然后我现在想让你倒序把他们输出来。
int i,a[10]={0,1,2,3,4,5,6,7,8,9};
for(i=9;i>=0;i--)
printf("%d\t",a[i]);
printf("\n");
现在给你5个数,然后让他们进行从小到大排序,你会怎么排??
其实我们有一种方法,叫选择法。
比如这样,1,5,4,2,6
这样5个数,第一个数和第二个数比较,谁小谁就放第一个数的位置,再跟第三,第四和第五用同样的方法,这样就能保证我们第一个一定是最小的了。
同样的,第二小的也用同样的方法,第三小的也是。这样就能保证我们的输出了。既然这样的话,我们来看看一开始问到的那道题。
开始做题
假如给你一个问题,让你输入10个地区的面积(面积为整数),对它们由小到大进行排序,并且输出排序的结果。
首先,我们来输入10个数
int a[10];
int i;
printf("请输入10个面积:\n");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
然后,得到数后,我们就该开始进行排序了。
for(i=0;i<=8;i++)
for(j=i+1;i<=9;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=a[t]
}
最后的最后,只要把这些数都输出就可以啦。
printf("排序后的面积依次是:\n");
for(i=0;i<=9;i++)
printf("%d\t",a[i]);
printf("\n");
其实呢,排序除了选择法,还有另外一种,冒泡法(又叫沉底法)
道理是这样的,就是左右两个数比较,大的就放后面,这样,我们就会发现。到最后的那个数,就是最大的了。
我们来看一下程序吧,这个过程稍微有点复杂,看不懂也没关系。
for(j=0;j<=8;j++)
for(i=0;i<=8-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t
}