2013-01-21 43 views
3

我正在编写一个程序,使用1个语句读取用户的6个浮点数。然后它打印的6个数字在3线,与所有的以下条件:初学者C - 以相反的顺序打印用户的浮点数输入

(1)的编号印刷以相反的顺序,它们在

(2)它们在3行: 1号在第一行,2号到下一行,3号在最后一行

(3)小数点后排队号码,将他们以列格式,右对齐,带1位


这是我对第2个要求的尝试

#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

按任意键继续。 。 。

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

+5

他们是垃圾,因为你从来没有初始化它们。 'scanf'调用也没有设置它们,因为你输入的文本与格式字符串不匹配,所以'scanf'失败 - 你没有注意到,因为你没有检查'scanf'的返回值。 – melpomene

回答

6

您的格式

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

预计第一float后和以下逗号前1,后在旁边等。2

应该

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

由于分离数字未提供,第二次转换(以及后续)失败,另一个float s仍未初始化。

+0

明白了!非常感谢大家! – user

+0

我知道这是一件非常简单的事情,被初学者所忽视,但无法理解我的生活。 – user

+1

您的printf()语句也是如此。每个变量使用%f本身。 –

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

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

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

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

+2

我会很有建设性,并说它不会用格式字符串的小数点后2位数字打印。 – nhahtdh

+0

是的,你是对的,对不起,我犯了一个错误的钥匙,它是0.2f – igarcia

+0

你可以完全编辑你的文章,纠正错误。 – nhahtdh

相关问题