- ベストアンサー
C言語 %表示
二つの整数値を読み込んで、前者が後者の何%かを表示するプログラムを作成したいです。 #include<stdio.h> int main(void){ int no1,no2; printf("整数を入力してください。\n"); printf("整数A:"); scanf("%d",&no1); printf("整数B:"); scanf("%d",&no2); printf("Aの値はBの値の%f%%です。\n",(double)(no1/no2)); } Aの値はBの値の0.0000%です。となってしまいます。 上記のプログラムの訂正をお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(double)no1/(double)no2 に修正。 (double)(no1/no2)では、割り算ををintで計算した後、doubleにキャストしています。
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.3
一つは、純粋な計算間違い。 パーセント(no1=no2なら100%)を計算するのに、割合(no1=no2なら1.0)しか求めていない。 もし %f%% と書いたら、割合が 自動でパーセント表記になる、と思っているのなら、そこが間違い。 Excelで0.1と書いて、書式を%表記にしたら、自動で10%になったりしますが、printfの%%は、純粋に % という文字を出力するだけです。 もう一つは、C言語の計算方法とその順番。 整数/整数は整数になるので、 例えば、100/200=0です。 また、 (double)(no1/no2) は no1/no2 を計算してから、その結果をdoubleに変換します。
質問者
お礼
ありがとうございます。
- maiko0318
- ベストアンサー率21% (1483/6969)
回答No.2
%表示なら100倍しないと。
質問者
お礼
間違いの指摘、ありがとうございます。
お礼
少数が表示されました。ありがとうございます。