高手帮指教个C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:53:44
输入两个实数,按代数值由小到大的顺序输出这两个数。
#include<stdio.h>
void main()
{float a,b,t;
scanf(〃%f,%f〃,&a,&b);
if(a>b)
{t=a;
a=b;
b=t;}
printf(〃%5.2f,%5.2f\n〃,a,b);}

因初学C++, 甚多语句不明,, 最后一段printf(〃%5.2f,%5.2f\n〃,a,b);}
%5.2f是什么意思阿?我输入%3.2f 输出的结果都是一样的.或者%2.2f都可以.
2好像值得是小数位数,那前面的呢?>

楼上的正解
如果数据长度小于要求输出长度,可以要求用0来补足空缺的位置,你可以自己多写几个实验下,实践比空学理论强得多.

%m.nf前面的m 是输出的宽度,后面的n是小数点后的位数
如果你要输出的值的长度大于m,那么m就不起作用,按实际的输出
如果你要输出的值的长度小于m,那么数出数输出长度为m
按右对齐输出,长度不够的用空格补充
你输入
1和2112345
试试就清楚了
#include<stdio.h>
void main()
{float a,b,t;
scanf("%f%f",&a,&b);
if(a>b)
{t=a;
a=b;
b=t;}
printf("%5.2f\n%5.2f\n",a,b);}

以下是书上的标准答案:

%m.nf指定输出的数据共占m列,其中有n位小数.如果数值长度小于m,则左端补空格.
%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格.

所以%5.2f\%3.2f\%2.2f都是不一样的,区别就在于左端的空格数目

%5.2f:左对齐,有小数点后两位,共7位的浮点型数据

%5.2f、%6.2f等都是打印浮点数,关键是小数点后的位数不同。通常如果小数点后的位数较小的话,就没有必要对此进行深究!

如%5.3f的意思是:整实型数占5个字符宽度输出包括小数点在内,它的小数部分占3个宽度,则整数部分只占1个宽度,但有缺省默认为实际的整数部分大于限定的话,如本例中的1时,则按原宽度输出。

如若%5.2f对应的控制值是45678.3456则输出为45678.35
小数部分四舍五入还是取两位。

如若%5.2f对应的控制值是1.6789则输出为:空格1.69

这就不难解释前面的问题。