• ベストアンサー

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%です。となってしまいます。 上記のプログラムの訂正をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dolittle0
  • ベストアンサー率26% (11/42)
回答No.1

(double)no1/(double)no2 に修正。 (double)(no1/no2)では、割り算ををintで計算した後、doubleにキャストしています。

situmonn9876
質問者

お礼

少数が表示されました。ありがとうございます。

その他の回答 (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に変換します。

situmonn9876
質問者

お礼

ありがとうございます。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

%表示なら100倍しないと。

situmonn9876
質問者

お礼

間違いの指摘、ありがとうございます。

関連するQ&A