初学者C – 以相反的顺序打印用户的浮动输入

我正在编写一个程序,它使用1个语句来读取用户的6个浮点数。 然后让它打印3行中的6个数字,满足以下所有要求:

(1)数字按照读入的相反顺序打印

(2)它们在3行上:第一行有1个数字,下一行有2个数字,最后一行有3个数字

(3)将数字对齐,使它们采用列格式,右对齐,小数点后1位


这是我对前两个要求的尝试

#include  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); 

期望在第一个float和之后的逗号之前为1,在下一个float之后为2

它应该是

 scanf ("%f,%f,%f,%f,%f,%f",&f1,&f2,&f3,&f4,&f5,&f6); 

由于没有提供分隔数字,第二次转换(和以下)失败,而其他float仍然未初始化。

问题在于格式:

 scanf ("%f1,%f2,%f3,%f4,%f5,%f6",&f1,&f2,&f3,&f4,&f5,&f6); 

应该

 scanf ("%f,%f,%f,%f,%f,%f",&f1,&f2,&f3,&f4,&f5,&f6); 

打印浮点数的正确格式是:

 printf("%.1f", variable); 

在此示例中, variable的数字将在小数点后打印1位数。