昨日刷题,居然被这破玩意儿难住了,搞了半个多小时弄了个神必算法。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char input[3][128];
float row[3];
float buffer = 0.0f;
for(int i = 0;i < 3;i++)
{
char buffer[128];
scanf("%s",buffer);
strcpy(input[i], buffer);
}
for(int i = 0;i <= 3;i++)
{
for(int j = 0;j < 2;j++)
{
if(atof(input[j]) < atof(input[j+1]))
{
char buffer[128];
strcpy(buffer, input[j+1]);
strcpy(input[j+1], input[j]);
strcpy(input[j], buffer);
}
}
}
for(int i = 0;i < 3;i++)
{
printf("%s ",input[i]);
}
putc('\n',stdout);
return 0;
}
说出来你可能不信,我当时甚至想拿union来搞位操作判断是几位小数。
后来发现只要用%g就可以忽略浮点数多余的0不输出了。
使用如下
printf("%g\n",114.51400f); //output: 114.514
char buffer[128];
sprintf(buffer,"%g",114.51400f);
puts(buffer); //output: 114.514