我正在写一个程序,它使用一个语句从用户那里读取6个浮点数。然后按以下要求将6个数字打印成3行:
(1)数字的打印顺序与读取顺序相反
(2)三行:第一行1个,第二行2个,最后一行3个
(3)将数字排列成列格式,右对齐,小数点后1位
这是我对前两个要求的尝试
#include <stdio.h>
int main(void)
{
//variable definitions
float f1,f2,f3,f4,f5,f6;
printf ("Enter 6 float numbers, separated by commas: ");
scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6);
printf ("%f6\n",f6);
printf ("%f5,%f4\n",f5,f4);
printf ("%f3,%f2,%f1\n",f3,f2,f1);
return 0;
}
对我的初学者来说,这很有意义。
这是我运行的结果
输入6个浮点数,用逗号分隔:0.2,3.2,0.1,0.5,0.6,0.7
数字是:
-107374176.0000006个
-107374176.0000005,-107374176.0000004
-107374176.0000003,-107374176.0000002,0.2000001
按任意键继续。……
所有这些都是垃圾输出,除了最后一个。感谢所有的帮助!
最佳答案
你的格式
scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6);
在第一个
1
之后和下一个逗号之前需要afloat
,在下一个逗号之后需要a2
。应该是
scanf ("%f,%f,%f,%f,%f,%f",&f1,&f2,&f3,&f4,&f5,&f6);
由于没有提供分隔数字,第二个转换(和以下转换)失败,而另一个
float
s保持未初始化状态。