我正在写一个程序,它使用一个语句从用户那里读取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);

由于没有提供分隔数字,第二个转换(和以下转换)失败,而另一个floats保持未初始化状态。

08-25 06:12