ここから本文です

プログラムでC言語のwhile文がなぜか実行しませんどうすればいいでしょうか? プ...

ifu********さん

2017/12/1107:55:05

プログラムでC言語のwhile文がなぜか実行しませんどうすればいいでしょうか?
プログラムは
#include <stdio.h>

int main(void)
{
int a[7];
int b,c;

printf("満腹度の最大値

は?¥n");
scanf("%d",&a[0]);
printf("のどの渇きの最大値は?¥n");
scanf("%d",&a[1]);
printf("何をした?¥n");
scanf("%d",&c);
a[2]=a[0]/2;
a[3]=a[1]/2;
while (b==1){
switch(c){
case 1:
a[2]=a[2]+20;
if(a[2]>a[0]){
a[2]=a[0];}
printf("満腹度は%dです¥n",a[2]);
break;
case 2:
a[3]=a[3]+20;
if(a[3]>a[1]){
a[3]=a[1];}
printf("のどの渇きは%dです¥n",a[3]);
break;
case 3:
printf("終了します");
b=b+1;
break;
befault:
a[2]=a[2]-10;
a[3]=a[3]-20;
printf("満腹度は%dです¥n",a[2]);
printf("のどの渇きは%dです\n",a[3]);
break;
}
}

return 0;
}
です
わかる方お願いします

閲覧数:
68
回答数:
3

違反報告

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

プロフィール画像

カテゴリマスター

qui********さん

2017/12/1111:28:58

> C言語のwhile文がなぜか実行しません
私の知る限り、ほぼ100%、while文は実行しているのですが、継続条件がいきなり偽になるプログラムのために繰り返し回数がゼロである、という状況です。

「なぜか」それはあなたがそういうプログラムを書いているから。


int main(void)
{
int a[7];
int b,c;
ここで、bが宣言されました。bの値は...不定、です。0かも、1かも、1億かも、-20億かも知れません。普通のPCのプログラムであれば、単純に考えてbの値が1である確率はおおよそ40億分の1です。
で、
while(b==1){
//処理
}
//その次
bの値が1に等しければ、処理を行ってまたwhileに戻ります(繰り返し)。bの値が1と異なれば、処理をとばしてその次に進んでwhileには戻りません。
bの値は...多分1ではない、ので、「whileは多分実行しません」ということになります。

あなたがこのプログラムで何をしたいのか定かではありませんが、whileのループ処理を実行させるためにはwhileに到達する前にbに1を代入しておくか、あるいはwhileの継続条件をみなおすかどちらかです。
ただし、whileに入ったとしても、多分このプログラムはあなたの期待する動きをしないと思いますので、「全部ちゃんと考えて作り直し」が一番おすすめの作業と言わざるをえないでしょう...

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

2017/12/11 13:46:41

ありがとうございます一番丁寧な説明をしたあなたをベストアンサーにします

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

1〜2件/2件中

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

bjf********さん

2017/12/1108:06:59

そりゃ動かんだろうが

while(b==1)→変数bが1ならwhileを実行

しかし、b=1という処理がどこにもないんだから
whileは実行されないのが当然

nex********さん

2017/12/1108:02:20

while (b==1)の前にb=1;を記述してみたら。

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

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

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

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

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

閉じる

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

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

閉じる