3

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

(1) 数字以与读入相反的顺序打印

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

(3) 将数字排列成列格式,右对齐,小数点后一位


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

#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

按任意键继续 。. .

除了最后一个之外,所有这些都是垃圾输出。感谢所有帮助!

4

3 回答 3

6

你的格式

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

期望 a1在第一个之后float和以下逗号之前,a2在下一个等之后。

它应该是

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

由于未提供分隔数字,因此第二次转换(以及以下转换)失败,并且其他floats 保持未初始化。

于 2013-01-21T20:20:26.733 回答
2

问题出在格式上:

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);
于 2013-01-21T20:21:06.577 回答
1

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

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

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

于 2013-01-21T20:21:34.447 回答