一个简单C程序的优劣问题
//随便输入三个数,按照从小到大输出
#include <stdio.h>
int main()
{
float a,b,c,d,f;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
d=a;
f=b;
}
else
{
d=b;
f=a;
}
float h,g;
if(c>d)
{
h=c;
g=d;
}
else
{
h=d;
g=c;
}
printf("%5.2f,%5.2f,%5.2f\n",f,g,h);
return 0;
}
/*
#include <stdio.h>
int main()
{
float a,b,c,t;
scanf("%f,%f,%f",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
return 0;
}
*/
PS:上面两种程序哪个更好一些?一般情况下用什么方法比较实现同一目的但写法不同的程序的优劣呢?
------解决方案--------------------
时间复杂度和空间复杂度
以及代码是否优雅
下面的会好一点
[解决办法]
下面的方法好一些,
上面的方法逻辑上还有不足,而且变量太多了,
上面的算法里面你先把大的数放在d中,小的数放在f中,后来你只判断c和d的关系,没有判断c和f的关系
if(c>d)//c比大的数还大
{
h=c;
g=d;
}//到这儿还是对的
else//你这儿确定c比f大吗?
{
h=d;
g=c;
}
printf("%5.2f,%5.2f,%5.2f\n",f,g,h);