请详细解释一下这个C程序的算法

来源:百度知道 编辑:UC知道 时间:2024/09/22 19:39:34
#include<stdio.h>
void main()
{
int a,b,c,m;
scanf("%d%d%d",&a,&b,&c);
if (a>b)
{
m=a;
a=b;
b=m;
}
if (a>c)
{
m=a;
a=c;
c=m;
}
if (b>c)
{
m=b;
b=c;
c=m;
}
printf("%d,%d,%d",a,b,c);
getch();
}
怎么看都琢磨不透 请高手讲讲为什么 一定要详细的 谢谢

好象是按照大小排列的
如果a>b那么就把A换成B
A再和C比如果大就换
B再和C比

三个数的冒泡排序
结果是 a<=b<=c

如果a>b那么就把A、B 互换
A再和C比如果大就换
B再和C比

这是个输入三个数,然后按从小到大顺序输出这三个数的程序。
程序先定义了四个变量,三个用来存贮键盘输入的数据,一个用做中间变量。先用scanf要求用户从键盘输入三个整型数,依次存到a,b,c中。
然后比较a和b,如果a>b,就把a和b的值交换一下,其结果是经过这一步后肯定有a<b.第二个if保证a<c,第三个保证b<c。这样,最多经过三次换值,就把输入的值按从小到大的顺序存入a,b,c。然后再把a,b,c输出即从小到大的顺序。
再以第一个if为例说一下怎么换的。比如初始时a为4,c为2。a>c,执行m=a,这时m=a=4,然后执行a=b,这时a=b=2,再执行b=m,这时,b=4.这时,第一个if执行完,a为2,b为4。其他三个if都是一样的方法

#include<stdio.h>
void main()
{
int a,b,c,m; //定义变量abcm
scanf("%d%d%d",&a,&b,&c); //从键盘获取abcm的变量的输入值
if (a>b) //如果输入a>输入的b
{
m=a;
a=b; //m是个中间值,负责交换ab值的中间变量
b=m;
} //就交换ab的值 ,把小的放在前面。
if (a>c)
{
m=a;
a=c;
c=m; //交换ac的值原理同上
}
if (b>c)
{
m=b;
b=c;
c=m; //交换bc的值原理同上
}
printf("%d,%d,%d&quo