ABA
@ABA (A)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

小数点以下の出力

Q&A

解決したいこと

整数値と平均値の差を小数点以下1桁まで出力したいです。エラーにはなりませんが警告が出てしまいます。
出力された結果も正しい数字ではありません。いろいろ試してみましたが、解決できません。解決方法を教えてください。

発生している問題・エラー

%dで整数を出力すると整数として正しい結果が出ますが、%1fで小数点以下の結果を出力しようとすると、0.0と0が並ぶ違う数値が出力されてしまいます。

該当するソースコード

ソースコードを入力
#include <stdio.h>

int main() {
  int n[5],i, sum;


  scanf("%d", &n[0]);
  scanf("%d", &n[1]);
  scanf("%d", &n[2]);
  scanf("%d", &n[3]);
  scanf("%d", &n[4]);

  sum = 0;

    for(i=0; i<5; i++){
        sum += n[i];       
    }

  printf("%d\n", sum/5);
  printf("%d:%d\n", n[0],n[0]-sum/5);
  printf("%d:%d\n", n[1],n[1]-sum/5);
  printf("%d:%d\n", n[2],n[2]-sum/5);
  printf("%d:%d\n", n[3],n[3]-sum/5);
  printf("%d:%d\n", n[4],n[4]-sum/5);
  return 0;
}




### 自分で試したこと
整数値では正しい結果が出る
printf("%d\n", sum/5);
printf"%d:%d\n", n[0],n[0]-sum/5);
・・・
を小数点以下1桁の出力にするため
printf("%1f\n", sum/5);
printf("%1f:%d\n", n[0],n[0]-sum/5);
・・・
としてみました。
0

1Answer

%fに対してintなどの整数型を与えることはできません。
float型の変数を与えるものです。

0Like

Comments

  1. @ABA

    Questioner

    ありがとうございます。int  n[5],i, sum; を float  n[5],i, sum; に変更してみましたが、これだけでは解決しないのですね。
  2. @ABA

    Questioner

    配列にはfloat型の変数は使用できないのでしょうか。
  3. @ABA

    Questioner

    #include <stdio.h>

    int main(void) {
    double a,b,c,d,e, sum;


    scanf("%lf", &a);
    scanf("%lf", &b);
    scanf("%lf", &c);
    scanf("%lf", &d);
    scanf("%lf", &e);

    sum = a+b+c+d+e;



    printf("%.1f\n", sum/5);
    printf("%d:%1f\n", a,a-sum/5);
    printf("%d:%1f\n", b,b-sum/5);
    printf("%d:%1f\n", c,c-sum/5);
    printf("%d:%1f\n", d,d-sum/5);
    printf("%d:%1f\n", e,e-sum/5);
    return 0;
    }
    で行うと printf("%.1f\n", sum/5); だけは正しく出力されます。
    intとdoubleですと、doubleになるという認識でいるのですが。
  4. > printf("%d:%1f\n", a,a-sum/5);
    今度は整数型の値を表示する%dに対してdouble型の値を渡しているのが間違いです。

Your answer might help someone💌