舍入浮点数并乘以字符(c)*更新

时间:2013-03-24 00:58:00

标签: c concatenation

任何人都可以帮助使用以下代码吗? 来自python的c新手,所以我知道我的代码是错误的。 我试图制作一个代码,可以向下舍入浮点数并乘以所谓的浮点数

float avg;
char star='*';
float top;
float bottom;

top=50;
bottom=80;


avg=(top/bottom*10);
star*=avg;
printf("%c\n",star);
printf("%d\n",top);
printf("%d\n",bottom);
printf("%f\n",avg);

输出需要

* * * * * *   
50  
80     
6.25

我得到的是

♠ 
50
80
6.25 

我也尝试使用地板来平整平均但是这只是将铁锹变成了另一个角色而6.25变成了6.00000000000000

2 个答案:

答案 0 :(得分:1)

您需要的是for循环:

for(int i=0; i<avg ; ++i)
   printf("%c",star);
printf("\n");

在C中,当你乘以char和浮点数时,你得到另一个浮点数(你的第一个浮点数再乘以char的ascii代码),因为你打印得像一个char {{1将float转换为char并打印相应的char。

答案 1 :(得分:1)

您应该使用循环来显示* s;

for( int i = 0; i < avg; ++ i ) {
    printf( "* " );
}
printf( "\n" );

(摆脱star变量)。

解释您所看到的行为:当您执行star *= avg;时,实际发生的是星号的ascii值,即* =&gt; 42,乘以avg,即6.25。这产生262.5,它被缩短(模256)到6.5并且小数被移除(6),以再次适合于char。 ascii中的6通常不是一个可见字符(技术上它是“确认”),但在你正在使用的代码页中,事实证明它是一个spade符号。