ページ 11

C言語初心者

Posted: 2010年10月31日(日) 20:41
by みう
C言語 の勉強をしているのですが「初心者」
下の問題があったのですが。
int inp = -1 の意味がわかりません
int inpじゃなんでだめになっちゃうんでしょうか?
あと下にあるint != seikaiの!はどうゆう役割をしているんでしょうか
簡単な質問かもしれませんが教えてください><
__________________________________________________
問題

数当てゲーム。ある数を設定して、それを当てるゲームを作る。正解よりも小さい値を入力したら「小さい」と、大きい値を入力したら「大きい」と表示する。入力する範囲は0から9999に限定し、それ以外が入力されたらもう一度入力させる。 10回行っても正解しない場合は終了する。

解答

#include <stdio.h>

void main(){
int seikai = 1484;
int count;
int inp = -1;

for ( count = 1 ; count <= 10 ; count++ ){
inp = -1;
while( inp < 0 || inp > 9999 )
scanf("%d", &inp);

if ( inp == seikai ){
printf("%d回目で正解ですね\n", count);
break;
}
if ( inp < seikai )
printf("小さい\n");
else
printf("大きい\n");
}
if ( inp != seikai )
printf("10回で正解しませんでした。ゲームオーバー\n");
}

Re:C言語初心者

Posted: 2010年10月31日(日) 20:55
by イズミ
int inp = -1 の意味がわかりません
int inpじゃなんでだめになっちゃうんでしょうか?>>
 
もしinpに何も値が代入されていなければ8行目の
while( inp < 0 || inp > 9999 )
で判断できなくなってしまいエラーになってしまいます。





あと下にあるint != seikaiの!はどうゆう役割をしているんでしょうか?>>
     (↑int ではなく inp でないでしょうか?)

!はinp と seikai が同じでないことをあらわします。
(つまり inp == seikai の逆)


こんな感じの回答でよろしかったでしょうか?

Re:C言語初心者

Posted: 2010年10月31日(日) 21:24
by みう
ということは。inp=10000でももんだいないということですか?

Re:C言語初心者

Posted: 2010年10月31日(日) 21:53
by ゆーずぃ
>inp=10000
問題ないです。ただ、どのみちWhileループに入る前に-1を代入しているので正直初期化する必要はないです。なので最初に指摘してたようなint inp;でもいいです。

Re:C言語初心者

Posted: 2010年10月31日(日) 21:57
by みう
これで次に進めます。
ありがとうございました~^^

また質問するかもしれませんがそのときはよろしくお願いします&#9787;&#9787;&#9787;

Re:C言語初心者

Posted: 2010年10月31日(日) 22:21
by 白い時空
補足ですが、次のようにdo while文に変更すればinp = -1を入れなくても大丈夫です

do{
scanf("%d", &inp);
}while( inp < 0 || inp > 9999 );
画像