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

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

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

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

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Q&A

解決済

3回答

3701閲覧

C言語 改行を含む入力

haru-1218

総合スコア3

C

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

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

1グッド

1クリップ

投稿2020/05/14 07:25

前提・実現したいこと

以下の問題についてです。

整数値1個からなる複数の行が入力されたとき,その個数,総和,平均を出力するプログラムを作れ。
キーボードから入力するときは,最後に C-d(Control鍵を押しながらd鍵)を打鍵する。
平均は小数点以下3桁まで示せ。個数,総和,平均は,必要最小限の文字数で示せ。個数・総和・平均は,この順に空白1文字で区切りながら出力し,最後に改行を出力せよ。
ただし,入力が空であったときは
No data
と書かれた1行を出力せよ。

実行例
[1w1301230 ~]% ./a.out
No data

[1w1301230 ~]% ./a.out
2
3
4
5
4 14 3.500

発生している問題・エラーメッセージ

scanfで入力を受け取ろうと思ったのですが、改行が含まれていることと、入力のデータの個数が決まっていないため、どうすればよいかわかりません。初めたばかりなので初歩的な問題だと思いますが、ご教授お願い致します。

DrqYuto👍を押しています

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

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

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

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

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

guest

回答3

0

scanfを使うよりは、fgetsで1行ずつ入力してsscanfするかatoiで整数にします。

投稿2020/05/14 09:53

otn

総合スコア85901

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

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

pepperleaf

2020/05/14 12:11

scanf()が人気みたいですが、変な入力された時を考えると、fgets()とかで一行入力が安心。
guest

0

ベストアンサー

scanf("%d", &num) は、数値を取り込めた場合は 1を返し、
そうでない場合は 1以外の値を返します。
次のようにすれば、個数が決まっていない数値を全部読み込めます。

C

1 int data, n = 0; 2 while (scanf("%d", &data) == 1) { 3 // data を使った処理 4 n++; // 読み込めた数値の個数 5 }

また、scanf の "%d" や "%s" などほとんどすべての変換指定は
入力の改行やスペースは読み飛ばすので意識しなくて済みます。
例外は "%c" と "%[]" です。

投稿2020/05/14 09:48

kazuma-s

総合スコア8224

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

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

haru-1218

2020/05/15 04:07

質問者です!無事解決しました。ありがとうございました!
guest

0

ループを使って、
scanf で、1つづつ数回読み込めばいいのでは?
ループして読み込んだ回数が、個数
入力した数値を、加算する変数1個に順次加算していって、
加算された変数の値/個数で平均が出ます。

何で勉強されているのかわかりませんが、
まあ、そういう問題が出て来るってことは、
それにたどり着ける様な記述かあるはずなので、
見直してください。

投稿2020/05/14 08:52

PingHermit

総合スコア478

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問