-2

任何人都可以帮助以下代码吗?
来自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 

我也尝试过使用 floor 来舍入平均值,但这只会将黑桃变成不同的字符,而 6.25 变为 6.00000000000000

4

2 回答 2

1

你需要的是一个for循环:

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

在 C 中,当您将 anchar和一个浮点数相乘时,您会得到另一个浮点数(您的第一个浮点数乘以 的 ascii 代码char),因为您像 char 一样打印printf会将浮点数转换为 char 并打印相应的字符。

于 2013-03-24T01:04:44.447 回答
1

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

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

(摆脱star变量)。

为了解释你看到的行为:当你这样做时star *= avg;,实际发生的是star的ascii值,即*=> 42,乘以avg,即6.25。这将产生 262.5,将其缩短(模 256)为 6.5,并删除小数点 (6),以再次适合 char。ascii 中的 6 通常不是可见字符(从技术上讲,它是“确认”),但在您使用的代码页中,事实证明它被绘制为黑桃符号。

于 2013-03-24T01:06:53.003 回答