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

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

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

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

Q&A

解決済

3回答

5619閲覧

scanf を使って入力した数字や文字を、改行させないで表示する方法を教えていただきたいです。

OHASI

総合スコア96

C

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

0グッド

0クリップ

投稿2020/07/02 12:10

実行結果を下(解答の実行結果)のようにしたいのですが、scanfで入力する際、改行されてしまいます。どこを直せば改行されないでしょうか?
自分で書いたコードは下に貼ってあります。

<解答の実行結果>
各月の気温データ
1 月:12.1 2 月:12.2 3 月:15.2 4 月:20.3
5 月:24.3 6 月:28.1 7 月:30.6 8 月:32.1
9 月:27.9 10 月:21.3 11 月:17.0 12 月:13.1
平均気温: 21.183 度

<自分で書いたコードの実行結果>
各月の気温データ 
1月: 12.1
2月: 12.2
3月: 15.2
4月: 20.3
5月: 24.3
6月: 28.1
7月: 30.6
8月: 32.1
9月: 27.9
10月: 21.3
11月: 17.0
12月: 13.1
平均21.2度

#include <stdio.h> int main(void) { float ondo[12]; float mean=0.0; int i; printf("各月の気温データ \n"); for (i=0;i<12;i++) { printf("%d月: ",i+1); scanf("%f", &ondo[i]); mean = mean + ondo[i]; } /* if((i+1)%4==0) { printf("\n"); } */ printf("平均%.1f度",mean/i); return 0; }

ちなみに、途中に書いてある

if((i+1)%4==0) { printf("\n"); }

は、課題のヒントの中にあったものです。どこに使えばいいのかわからないので /**/ で囲んでおきました。

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

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

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

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

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

OHASI

2020/07/02 13:42

解決しました。 ご丁寧にありがとうございました。
guest

回答3

0

ベストアンサー

課題のヒントから察するに、scanfを改行なしで入力することは求められておらず、提示されている実行結果は、scanfで(改行を伴いながら)入力したforループを完了した後に、もう一度forループを回して、printfで1か月ごとの気温データを(改行しないで)表示し、i の値が 3, 7, 11 のときには改行を加えるという処理によって表示されるものだと考えられます。

C

1 for (i = 0; i < 12; i++) { 2 printf("%d月: ", i + 1); 3 scanf("%f", &ondo[i]); 4 mean = mean + ondo[i]; 5 } 6 printf("各月の気温データ \n"); 7 for (i = 0; i < 12; i++) { 8 printf("%d月: %4.1f ", i + 1, ondo[i]); 9 if ((i + 1) % 4 == 0) { 10 printf("\n"); 11 } 12 }

なお、Enterキーを使わずに即時入力する方法はありますが(cursesを使うとか)、この課題のレベルでそれが求められるとは思えません。

投稿2020/07/02 12:35

Daregada

総合スコア11990

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

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

OHASI

2020/07/02 13:38

解決しました。 ありがとうございました。
guest

0

scanfを使ってる時点でそれは無理です
それは使わずに、コンソールの直接入出力の関数を使って文字列入力するようにしましょう.

投稿2020/07/02 12:34

編集2020/07/02 12:36
y_waiwai

総合スコア87784

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

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

OHASI

2020/07/02 13:39

解決しました。 ありがとうございました。
guest

0

if((i+1)%4==0)
{
printf("\n");
}は余りが0のとき で4の倍数のときだからそしたら改行と書いてあります。あと、誰かがといてくれるでしょう。

投稿2020/07/02 12:28

txty

総合スコア298

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

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

OHASI

2020/07/02 13:39

解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問