-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 

また、フロアを使用して平均を丸めようとしましたが、スペードが別の文字に変わり、6.25 が 6.00000000000000 になります。

4

2 に答える 2

1

必要なのはforループです:

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

C では、charと float を乗算すると、別の float (最初の float に の ascii コードを乗算したものchar) が得られますprintf

于 2013-03-24T01:04:44.447 に答える
1

を表示するには、ループを使用する必要があります*

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

(変数を取り除きstarます)。

あなたが見た動作を説明するには: するとstar *= avg;、実際に起こるのは、スターの ascii 値*=> 42 に avg を掛けたもの、つまり 6.25 です。これにより 262.5 が生成され、これが 6.5 に短縮され (モジュロ 256)、10 進数が削除され (6)、再び char に収まるようになります。ascii の 6 は通常、目に見える文字ではありませんが (技術的には「承認」です)、使用しているコードページでは、スペード記号として描かれていることがわかります。

于 2013-03-24T01:06:53.003 に答える