C语言入门——如何比较n个数字的大小?
一、案例:比较三个数字大小(从小到大)
这个案例是大部分C语言初学者经常面对的问题,相信大家都比较熟悉。假设我们输入三个数字a, b, c,将这三个数字从小到大排序,我们可以通过以下代码来实现:
比较三个数字的大小:
#include<stdio.h>
int main(){
int a,b,c;
int tmp;
scanf("%d%d%d",&a,&b,&c);
if(a>b){
tmp=a;
a=b;
b=tmp;
}
if(a>c){
tmp=a;
a=c;
c=tmp;
}
if(b>c){
tmp=b;
b=c;
c=tmp;
}
printf("%d %d %d",a,b,c);
return 0;
}
我们不难发现,这段代码的思路是将 a,b;a,c;b,c分成三组数据分别进行比较,然后把较小的数值赋给前一个变量,并将该变量中的值替换出来,交给后一个变量,最后按照顺序依次输出。所以说,比较数值大小归根结底就是三个步骤:
二、推广:比较n个数字的大小(从小到大)
基于三个数大小比较的思路,我们不妨对此加以推广为n个数字的大小比较(一般性),此外,可以运用相类似的思路将数字从大到小排序。
比较n个数字的大小:
#include<stdio.h>
int main(){
int a[100^10];
int i;
int j=0;
int cnt=0;
int tmp;
char flag='a';
for(i=0;i<100^10&&flag!='\n';i++){
scanf("%d",&a[i]);
flag=getchar();
j++;
}//连续输入一组数据直至换行回车
while(cnt<j){
for(i=cnt;i<j;i++){
if(a[cnt]>a[i]){
tmp=a[cnt];
a[cnt]=a[i];
a[i]=tmp;
}
}
cnt++;
}
for(i=0;i<j;i++){
printf("%d\t",a[i]);
}
return 0;
}
由于我们需要输入n个数字,倘若定义n个变量来储存数值的话,程序会变得尤为冗杂且不具备普遍性。因此,我们需要通过数组来获得一系列输入数据。
在输入结束后,程序首先读取数组的第一项(i=cnt=0),然后通过for循环将首项与其他所有项两两分组比较,按照与案例相同的方法交换数值,使得前一项总是比后一项小。
当完成首项的比较后,再通过while语句读取第二项、第三项、第四项…进行比较,直到所有的数据全部排列在恰当的位置,最后遍历数组输出结果。
更多推荐
C语言入门——如何比较n个数字的大小?
发布评论