输入三个数,按大小输出的困惑!

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:10:59
程序如下:
#include<stdio.h>
main()
{
float a,b,c,i;
printf("Please enter a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{i=a;a=b;b=i;}/*如果a>b值为!0.执行此语句;若为0,则a<b.执行下一语句*/
if(a>c)
{i=a;a=c;c=i;}/*如果a>C值为!0,有a>b&&a>c||a<b&&a>c.执行此语句;若为0,则有a>b&&a<c||a<b&&a<c.执行下一语句)*/
if(b>c)
{i=b;b=c;c=i;}/*如果b>c值为!0,有(a>b&&a>c||a<b&&a>c)&&b>c.执行此语句;若为0,则有(a>b&&a<c||a<b&&a<c)&&b>c*/
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
}

那程序是书上写的,我先做这题的时候是用if...else结构来写,怎么写也写不出来,觉得思路不对,后来看书了。后面的备注是我写的,理解正确吗?

没那么复杂..不要想关为0或者为~0,只看表达示是真还是假.,,
你的题就是要从小到大输出,,那么就需要一一判断,
1.如果a>b交换ab,
2,如果a>c交换ac,
3.如果b>c交换bc,
这样就可以保证所有的数字被正确排序,,这个程序只是一种方法,当然你可以用你自己理解的方面,,书上的只是为了给你介绍if.else的用法,,而不是题本身的问题.