質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

1035閲覧

C言語プログラミング問題の訂正希望

ygst

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/10/25 15:34

編集2018/10/25 15:58

ボールドテキストC言語の問題についてです
キーボードから自然数mを入力すると,m個の実数を入力でき, 入力したm個の実数の平均を表示するプログラムを作成せよ.

m=3
[1/3] 1.5
[2/3] 2.5
[3/3] 3
avg: 2.333333

実行結果(m=3で実数として1.5, 2.5, 3を入力した場合)(1行目の3,2行目の1.5、3行目の2.5、4行目の3はキーボードからの入力です)
※avgはaverageのことです

#include <stdio.h>

int main(void)
{
int m, a;
float b, total;

printf("m=");
scanf("%d" ,&m);

for(total=0,a=1; a<=m; a++)
{
printf("[%d/%d] %f",a, m, b);
scanf("%f" ,&b);

total += b;
}

printf("avg: %f/%d", total, m);

return 0;
}

一応ソースコードを作りましたが出来ませんでした。
分かる方いましたら訂正お願いします。
[1/3]の後に変な数字の羅列が表示されてしまい[2/3]や[3/3]の後には前の行で入力した数字が表示されてしまいます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2018/10/26 04:28

解決したなら前出の質問「For文についての問題です」もクローズしましょう。
guest

回答3

0

何処かで誰かが述べられていましたが、
変数名を意味のあるものにした方がいいです。

英語が無理なら、最悪日本語(ローマ字)でもいいので。

変数名をa, bとしてしまっているせいで、混乱しているのだと思いますよ。

投稿2018/10/26 01:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

別解に成るかと思いますが・・・

#include <stdio.h> #include <stdlib.h> int main(void) { char buf[16]; // fgets(buf, sizeof buf, stdin); int cnt = (int)strtol(buf, 0, 10); if (cnt <= 0) { return 1; } // double sum = 0.0; for (int i = 0; i < cnt; i++) { fgets(buf, sizeof buf, stdin); sum += strtod(buf, 0); } printf("%f\n", sum / cnt); // return 0; }

fgets()を使うのは、scanf()はいろいろ問題がある関数だからです。(使い方を理解すれば大丈夫ですがおすすめしません。fgets()とsscanf()で間に合います)

実行結果
usr~/test/c % ./a.out
3
1.5
2.5
3
2.333333
usr~/test/c % echo $?
0
usr~/test/c % ./a.out
-3
usr~/test/c % echo $?
1
usr~/test/c % ./a.out
a
usr~/test/c % echo $?
1

For文についての問題ですについてはどうしますか?

投稿2018/10/25 16:13

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

scanf("%f" ,&b);
で入力したbを使えてないので、まずはそこを直してみてはいかがでしょう。

投稿2018/10/25 15:39

mrkmyki

総合スコア325

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ygst

2018/10/25 15:43

どうして使えていないのか教えていただけませんか?
y_waiwai

2018/10/25 15:48

入力したbはどこで使ってますか?
mrkmyki

2018/10/25 15:49

bに値を入力した後、使っていないからです。 scanf("%f" ,&b);でbに数字を1つずつ受け取りますよね。 平均を求めるには、そのbの合計を計算する必要がありますよね。 total += a;のところをtotal += b;にしないといけないと思います。
ygst

2018/10/25 15:52

説明ありがとうございます
cateye

2018/10/25 16:28

printf("[%d/%d] %f",a, m, b); scanf("%f" ,&b); ↓↓↓↓ scanf("%f" ,&b); printf("[%d/%d] %f",a, m, b);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問