c言語の問題です。キーボードから小数を繰り返し入力させ、負の数が入力されると入力を終了し、 それまでの非負小数の平均を 表示するプログラムを作成せよ。という問題です。自分は下記のように書いたのですが、平均を表示する時に負少数の値も含めたものが出てしまいます。どこを直せばいいのか教えていただきたいです。
#include<stdio.h>
int main(void)
{
double x,sum;
int a;
sum=0;
a=0;
while(x>=0){
printf("number=");
scanf("%lf",&x);
a++;
sum+=x;
if(x<0){
break;
}
}
printf("%lf\n",sum/a);
return(0);
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あー、もう一つ。
脱出のトコだけど、
if (x < 0) {
printf("%lf\n", sum/a);
break;
}
で印字してから脱出した方が良いかな。
No.2
- 回答日時:
sum+=x;
if(x<0)->で脱出
ってこの順番がおかしいです。
sumに負の小数が加算されてからxが負かどうか判定してる。
だから間違いですよね。
そうじゃなくって、xが入力されたら即座にxが負かどうか判定しないとならない。
つまり、やるならscanfでxに数値をツッコんですぐに脱出判定をしないといけない、と言う事です。
プログラムは「書かれた順番通りに実行される」のです。
これ、当たり前のように見えて意外と難しくって、条件分岐や反復より一番初心者が引っかかりやすいトコなのです。
こういう「書かれた順番通りに実行される」機能を逐次処理と呼びます。
No.1
- 回答日時:
入力数のカウンタである「a」を先にインクリメントしているから
if判定後の計算処理でズレる
if判定のelse節でカウントするとか
breakする際にカウンターを一つ戻すとか
余計に数えすぎない、もしくは余計な分を戻す
そういう処理が必要なのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getcの改行判定
-
構文エラー";"が型の前にあり...
-
scanfが実行されません
-
配列を関数に渡す方法
-
#if 1 #elseの意味について
-
中央値をもとめる
-
C言語 エラー表示 break の位...
-
配列を使って魔方陣
-
全角文字の判定
-
for文について
-
for文の中にswitch文はいれられ...
-
C言語プログラムが理解できなくて…
-
プログラミングで二番目に大き...
-
C言語 数字以外を入力させない...
-
プログラミングの配列で
-
平均身長のプログラミング
-
C言語のwhile文を使った素数判...
-
10進数からN進数に変換するプロ...
-
while文について、c言語...
-
c言語のプログラムで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
C言語階乗の総和を求める
-
配列を使って魔方陣
-
while文について、c言語...
-
プログラミングで二番目に大き...
-
C言語 数字以外を入力させない...
-
c言語のwhile文を使った計算で...
-
C言語プログラムが理解できなくて…
-
C言語で電卓を作成する。
-
配列を関数に渡す方法
-
C言語の二分法のプログラムにつ...
-
c言語for文
-
scanf関数を用いての加減乗除%...
-
階乗のプログラム!!
-
計算結果がlong型以上になる場...
-
c言語プログラミングで1から100...
-
初心者です。for文、if文を使っ...
おすすめ情報