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

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

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

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

2回答

5761閲覧

C言語で暗証番号のシステムを作る方法

OHASI

総合スコア96

C

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2020/06/05 02:56

【C言語】
while文1回、if文2回使って実行結果を下のようにしたいのですが、実際に自分でやってみましたが、暗証番号があっていても、もう一度「暗証番号を入力してください」と出力させてしまったりしていきずまっています。実際に自分で書いてみたコードも、一応貼らせていただきました。どこを治せばいいか教えてください。よろしくお願いします。

・3 回間違えるケース
暗証番号を入力して下さい:999
暗証番号が違います!
暗証番号を入力して下さい:12
暗証番号が違います!
暗証番号を入力して下さい:1234
暗証番号が違います!
あなたは怪しい人です.

・2 回間違えるケース
暗証番号を入力して下さい:999
暗証番号が違います!
暗証番号を入力して下さい:12
暗証番号が違います!
暗証番号を入力して下さい:123
認証しました.

・一度も間違えないケース
暗証番号を入力して下さい:123
認証しました.

C言語

1#include <stdio.h> 2 3int main(void) 4 5{ 6 int bango ,i; 7 8 i=1; 9 while(i <= 3) 10 { 11 printf("暗証番号を入力してください:"); 12 scanf("%d",&bango); 13 14 if(bango != 123) 15 printf("暗証番号が違います."); 16 1++; 17 } 18 else 19 printf("認証しました.\n"); 20 21 printf("あなたは怪しい人です."); 22 return 0; 23}

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

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

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

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

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

dodox86

2020/06/05 02:58

whileのループを抜ける条件を考えてみてください。
dodox86

2020/06/05 02:59

と言いますか、そもそもコンパイルエラーです。
episteme

2020/06/05 03:19

コンパイル・エラーだから実行できないはずなのに > 実際に自分でやってみましたが、暗証番号があっていても、もう一度「暗証番号を入力してください」と出力させてしまったり という謎現象。
guest

回答2

0

貼り付けられたソースコードでは、提示された結果は得られません。
i++」を「1++」と入力しているところを見ると、紙媒体に印刷されたソースを手で入力していると思われるので、見落としがないかよくチェックされるといいかと思います。
if文の{の漏れ、while文の}の漏れ、提示結果から類推するに各printfの文字列末尾の\nの漏れ、認証時に怪しい人扱いされないためのreturnなどが抜けているのでは。

投稿2020/06/05 03:22

Daregada

総合スコア11990

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

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

OHASI

2020/06/05 03:38

ありがとうございます。 もう一度やり直してみます。
guest

0

if(bango != 123)
printf("暗証番号が違います.");
1++;
}
else
printf("認証しました.\n");

if文はこれで完結しています
elseに、中括弧{}がありませんが、これでいいんでしょうか

投稿2020/06/05 02:59

y_waiwai

総合スコア87719

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

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

OHASI

2020/06/05 03:40

ありがとうございます。 もう一度確かめて、考え直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問