前提
2桁の整数を入力したら、それをひらがなで出力してくれるコードを書こうとしています。
例
(入力)21→(出力)にじゅうーいち
実現したいこと
10から99までの整数のどれかを入力したら、ひらがなで返してくれるコードを書きたいです。
発生している問題・エラーメッセージ
//エラーがでません。 //例えば21を入力すると下のように何故かなります。 2桁の整数をにゅうりょくしてください:21
該当のソースコード
#include <stdio.h> int main () { int a, b, c; c = 0; printf("2桁の整数をにゅうりょくしてください:"); scanf("%d", &a); if(a < 10 || a >99){ printf("識別できません。"); } if ( a > 19 && b <100){ if (a%10 != 0) { c = 1; } b = a%10; a = a/10; switch (a){ case 1: printf("じゅう"); break; case 2: printf("にじゅう"); break; case 3: printf("さんじゅう"); break; case 4: printf("よんじゅう"); break; case 5: printf("ごじゅう"); break; case 6: printf("ろくじゅう"); break; case 7: printf("ななじゅう"); break; case 8: printf("はちじゅう"); break; case 9: printf("きゅうじゅう"); break; default: break; } switch (b){ case 1: printf("-いち"); break; case 2: printf("-に"); break; case 3: printf("-さん"); break; case 4: printf("-よん"); break; case 5: printf("-ご"); break; case 6: printf("-ろく"); break; case 7: printf("-なな"); break; case 8: printf("-はち"); break; case 9: printf("-きゅう"); break; default: break; } } return 0; }
試したこと
二つ目のif文が間違っているかなと思ったのですが、やはり分かりませんでした。
補足情報(FW/ツールのバージョンなど)
ありません。
二つ目の if 文が実行されるとき b の値はいくつになっていますか。
そもそも二つ目の if 文で使う変数は a だけなのでは無いでしょうか。
更に言えば、二つ目の if 文は一つ目の if 文の else にすれば、条件を書く必要は無かったのでは。
なお、 C では簡単にはエラーは出ません。プログラムはそこにあるものを破壊してでも動作しようとします。なので『暴走』と呼ばれるのです。
すみません。もう少し具体的に教えてもらえないでしょうか?
bの値はaの一の位になるように書きました。
それでaは10の位で、switchで判別しようとしました。
aとbはそれぞれで1と10の位を判別するために使用しています。
具体的に「二つ目の if 文」「b」としているつもりだったのですが…。
比較する数値の範囲(>19や<100)ばかり気になって変数のほうに気が向かなかったでしょうか。
回答1件
あなたの回答
tips
プレビュー