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

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

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

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

Q&A

解決済

4回答

1278閲覧

c言語 演算と変数の入出力部分(a=9改行してb=4)にならない件について

za-to

総合スコア7

C

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

0グッド

0クリップ

投稿2020/05/20 13:15

c言語の基本的な問題にとりかかっているのですが、どうしても解けない問題があり苦慮しています。
その問題の「期待される実行結果」が出せず、どなたかわかる方解答お願いいたします。

期待される実行結果
a=9 ←キーボードから整数値を入力後、改行
b=4 ←キーボードから整数値を入力後、改行

void main(){
int a,b;
printf("a=");
printf("b=");

scanf("%d",a); scanf("%d",b); printf("%d\n",a); printf("%d\n",b);

このように形作りはしましたが(他にも色々試しましたが駄目でした…)、これでも駄目でした。

他のサイトも色々見て回りましたが、
a=b=9
b=9
となったり、

a=
b=
9
4
となり、どうしても

a=9
b=4
にならないのです。

初歩的ですみませんが、解答宜しくお願い致します。

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

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

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

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

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

guest

回答4

0

ベストアンサー

まず1点目 scanf("%d",a);←この書き方が間違っています。正しくは

scanf("%d",&a);

と書きましょう。変数aの前に、&マークを置く必要があります。

次に、scanfは、「単に入力を行うだけ」
そうしてPrintfは、「単に画面に文字を送り込むだけ」と考えてみましょう。(他の話はあえて省きます)

そうするとあなたが質問時に提示したコードの問題点(2点目)がわかります。
改行マーク(バックスラッシュn)を入れずにいきなり

printf("a=");
printf("b=");

と書けば、当然改行なしで「a=b=」と表示されます。
入力時になんのメッセージ表示もしないのであれば、以下のようなコードになるでしょう。

c

1int a,b; 2scanf("%d",&a); 3scanf("%d",&b); 4 5printf("a="); 6printf("%d\n",a); 7printf("b="); 8printf("%d\n",b);

投稿2020/05/21 12:14

elsewhere

総合スコア9

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

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

za-to

2020/05/22 05:36

解答ありがとうございました! 同時に並べていたから、できなかったのですね。 呆れるくらい初歩的な質問だったと思いますが、本当に助かりました。 早く1人前になれるよう頑張っていきたいと思います!
za-to

2020/05/22 05:38

解答ありがとうございました! printfを同時に並べていたのが原因だったのですね。本当に助かりました。これでまた進む事ができます。 早く1人前になれるよう頑張っていきたいと思います。では、改めてお礼申し上げます。
guest

0

paiza.ioをお使いとのことで試してみましたが、
標準入力のエコーバック(入力内容の表示)は無いようなので、
「そういう仕様」ということでしょう。

そもそも標準入力はC言語の「外側」の話なので。(その話を始めたら500字ぐらいは書けてしまいそう)

ローカル環境で実行したときとは「見え方」が違うことは覚悟して使って下さい。プログラムの本質が変わるわけではありません。

投稿2020/05/20 23:26

thkana

総合スコア7703

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

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

za-to

2020/05/22 05:33

解答ありがとうございました。 基本的過ぎて、呆れるくらいのレベルの質問のはずでしたが、勉強になりました。 精進したいと思います。 失礼します。
guest

0

プログラムは、分岐(if,for,do,while等)がない限り、必ず上から実行されます。
なので、やりたいことを上から書いていきましょう。

投稿2020/05/20 15:02

cateye

総合スコア6851

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

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

0

aを読み取ってからb=を表示しましょう。
scanfに渡すのは格納先のポインタです。

C

1int main() { 2 int a, b; 3 printf("a="); 4 scanf("%d", &a); 5 6 printf("b="); 7 scanf("%d", &b); 8 9 printf("%d\n", a); 10 printf("%d\n", b); 11 return 0; 12}

投稿2020/05/20 13:22

SHOMI

総合スコア4079

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

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

za-to

2020/05/20 21:22

解答ありがとうございます! 全く同じようにコード入力してみましたが、 a=b=9 4 というように出力されました。 使用しているのはpaiza.ioのブラウザです。 もしかしたらシステム上の問題なのでしょうか?
episteme

2020/05/20 22:10

msvc, gcc では再現しません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問