全くの初心者で問題集の問題に躓いたため助けていただきたいです。
問 前回と同じ数が入力されるまで、整数を入力する
int x,y;
scanf("%d",&x);
do{
scanf("%d",&x);
}_________
do whileの例題のため下の空欄にはwhile(条件式)というところまではわかったのですが上の空欄に何を入れるべきなのかがわかりません。初歩的なもので申し訳ありませんがお答えいただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
ループを使わずに3回入力させ前回入力と同じものがあるか
という問題を考えます
c
1int x,y; 2scanf("%d", &x); 3scanf("%d", &y); 4if(x == y){ 5 puts("以前の入力と同じ"); 6 return; 7} 8scanf("%d", &x); 9if(x == y){ 10 puts("以前の入力と同じ"); 11 return; 12} 13puts("同じ入力はなかった");
ざっとこんな感じです。
しかし、xとyを交互に使うのでは今回の穴埋めには形式があいません
そこで
c
1scanf("%d", &x); 2y = x; 3scanf("%d", &x); 4if(同一入力か?) おわり; 5y = x; 6scanf("%d", &x); 7if(同一入力か?) おわり;
みたいな感じに退避させる事を考えると
c
1scanf("%d", &x); 2do{ 3 y = x; 4 scanf("%d", &x); 5}while(x != y);
と穴埋め可能です。
投稿2018/07/15 20:44
総合スコア15147
0
とりあえず do-while 文を説明しますね。
do-while 文は、条件判定を後に行うタイプの繰り返し構文です。
c
1do { 2 ここでやりたい処理をします。 3} while (繰り返しを継続したい条件を書きます);
これは、まず最低一回中身を実行して、その後、条件を判断します。この条件を満たしていれば繰り返しますし、そうでなければ繰り返しを止めます。
例 1 : あまり do-while が嬉しくない例ですが。
c
1int i = 0; 2do { 3 i++; 4} while (i < 3);
これであれば、
- i に 0 を代入
- == do ==
- i に 1 を足す。
- == while == (i < 3 なら繰り返す)
という処理になります。つまり繰り返しに伴って i は 0 -> 1 -> 2 -> 3 となり、こうなった時点で i < 3 が満たせなくなるため繰り返しは終了です。
例 2
c
1int i; 2do { 3 printf("0 を入力するまで終了しませんよ -> "); 4 scanf("%d", &i); 5} while (i != 0);
実行例
0 を入力するまで終了しませんよ -> 1 0 を入力するまで終了しませんよ -> 4 0 を入力するまで終了しませんよ -> 2 0 を入力するまで終了しませんよ -> 3 0 を入力するまで終了しませんよ -> 0
これであれば、
- i を宣言する
- == do ==
- 説明メッセージを表示
- 入力を i に受け取る
- == while == (i が 0 でない間繰り返す)
つまり、繰り返しごとに毎回入力を受け付け、その入力が 0 のとき終了したい 、つまり、 0 でないとき繰り返しを続けたい ということになります。
例 3
c
1int i = 10000; 2do { 3 i++; 4 printf("%d\n", i); 5} while (i < 0);
do-while の特徴として条件判定を最後にする、というものがあります。
上のプログラムは i に 1 を足して結果を表示するだけのプログラムですが、条件を見ると i < 0 となっていますね。最初から int i = 10000;
としていますから、i < 0 になんてなりっこないです。でも、 do-while は条件判定を後でやるので、この場合よく見たら条件は満たしていないけれども、とりあえず一回は中身が実行されます。
投稿2018/07/15 20:57
総合スコア429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/16 04:22