ここから本文です

do whileの使い方について。

han********さん

2013/10/2019:25:26

do whileの使い方について。

このプログラムを動かしを
/*4を引きました。カードをもう1枚引きますか?(y/n)*/
でyを選択したところ
/*4を引きました。カードをもう1枚引きますか?(y/n)*/
と、もう一回表示され処理が終了しました。
nを入力するまでループするプログラムを作ったつもりでしたがどこか間違っていたみたいですdo whileの使い方合ってますよね?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

# define CMAX 52//カードの枚数

#define BUFF_SIZE 256 //入力バッファの大きさ

int i;
int main (void)

{
srand((unsigned)time(NULL));

int id=4;
char y;

printf("\n\n ___________\n");
printf(" |ブラックジャックゲーム|\n");
printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n");

do
{
printf("%dを引きました。カードをもう1枚引きますか?(y/n)",id);
scanf("%c",&y);
if(y=='n')break;

}while(y=='y');
}

閲覧数:
156
回答数:
3

違反報告

ベストアンサーに選ばれた回答

k03********さん

2013/10/2019:36:06

hanako_arumerando3さん

1.
(y == 'y');//'=='と'='でミスしやすいので
(y != 'n');//こちらが良い

2.
テストはして

int main (void)

{
srand((unsigned)time(NULL));

int id=4;
char y,str[10];//

do
{
printf("%dを引きました。カードをもう1枚引きますか?(y/n)",id);
scanf("%s",str);//
y=str[0];//
if(y=='n')break;

}while(y != 'n');
}

質問した人からのコメント

2013/10/20 20:18:35

ありがとうございました

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

chr********さん

2013/10/2019:43:19

while(y=='y')とあるので、'y'以外が入力されると終了します。

試しに以下のようなプログラムを書いてみました。
'y'を入力して、リターンを押した結果です。

1回目のループは、普通に'y'として処理しますが、
2文字の'改行'が入力済みなので、2回目の入力はすぐに終わり、
'改行(0x0A)'は'y'ではないので、終了しています。

scanf("%c\n", &c);
このように書き直すと、所望の動作をすると思います。

char y;
int i=0;
while(1){
printf(">");
scanf("%c", &y);
printf("%d %02x %c\n", ++i,y,y);
}

[実行結果]
>y
1 79 y
>2 0a

>

ada********さん

2013/10/2019:36:11

下と同じことです。\nがyに入り、'y'と違うので、whileループを抜けます。do whileの使い方は合っています。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1411517140...

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる