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

时间:2013-01-21 20:18:10

标签: c printf scanf

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

(1)数字按照与

中读取的相反顺序打印

(2)它们分为3行:第一行有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

     

按任意键继续。 。

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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

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

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