C言語でA,B,C,...,Jの大文字のアルファベットをそれぞれ0,1,2,...,9の数字に変換されるようなプログラムを作っています。
ABHILKLMN
と入力すると
0178LKLMN
と出力される感じです。
以下のコードで実行すると難なく動作してくれるんですが、
###コード(これは成功しました)
c
1#include <stdio.h> 2 3int main(void) 4{ 5 char str[10] = "ABCDEFGHIJ"; 6 char str1[10] = "0123456789"; 7 char inp[100]; 8 int i, j; 9 10 scanf_s("%s", inp,100); 11 12 for (j = 0; j < 100; j++) { 13 for (i = 0; i < 10; i++) { 14 if (inp[j] == str[i]) 15 inp[j] = str1[i]; 16 } 17 18 19 20 } 21 22 puts(inp); 23 24 return 0; 25 26}
以下のコードではfor文の中にbreak文を使って記述してみたのですが、
ABHILKLMN
と入力すると
0178フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ0123456789フフフフフフフフフフABCDEFGHIJフフフフフフ・
ウ・'
と出力されてしまいます。
###コード(失敗)
c
1#include <stdio.h> 2 3int main(void) 4{ 5 char str[10] = "ABCDEFGHIJ"; 6 char str1[10] = "0123456789"; 7 char inp[100]; 8 int i, j; 9 10 scanf_s("%s", inp,100); 11 12 for (j = 0; j < 100; j++) { 13 for (i = 0; i < 10; i++) { 14 if (inp[j] == str[i]) break; 15 16 } 17 inp[j] = str1[i]; 18 19 20 } 21 22 puts(inp); 23 24 return 0; 25 26}
前者と後者のコードは一見何も違いが無いんじゃないかと思ったのですが、後者ではうまく動作してくれないのが疑問だと感じたので質問させていただきました。
どなたかわかる方教えていただけると大変嬉しいです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/30 01:23