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

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

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

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

Q&A

解決済

1回答

640閲覧

なぜコードが動かないのかわかりません。エラーも何故か出ません。

haru0

総合スコア5

C

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

0グッド

0クリップ

投稿2022/11/12 20:24

前提

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/ツールのバージョンなど)

ありません。

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

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

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

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

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

jimbe

2022/11/12 20:37 編集

二つ目の if 文が実行されるとき b の値はいくつになっていますか。 そもそも二つ目の if 文で使う変数は a だけなのでは無いでしょうか。 更に言えば、二つ目の if 文は一つ目の if 文の else にすれば、条件を書く必要は無かったのでは。 なお、 C では簡単にはエラーは出ません。プログラムはそこにあるものを破壊してでも動作しようとします。なので『暴走』と呼ばれるのです。
haru0

2022/11/12 20:35

すみません。もう少し具体的に教えてもらえないでしょうか?
haru0

2022/11/12 20:58

bの値はaの一の位になるように書きました。 それでaは10の位で、switchで判別しようとしました。 aとbはそれぞれで1と10の位を判別するために使用しています。
jimbe

2022/11/13 03:56

具体的に「二つ目の if 文」「b」としているつもりだったのですが…。 比較する数値の範囲(>19や<100)ばかり気になって変数のほうに気が向かなかったでしょうか。
guest

回答1

0

ベストアンサー

おはようございます。

コード、読ませていただきました。

if ( a > 19 && b <100){

上記のif文で変数bが100未満かどうかをチェックしています。
しかし、変数bを使用する目的は、変数aの整数の1の位を格納することですから、
このif文において変数bの範囲をチェックすることに意味はありません。
そもそもこの段階で、変数bの値は未定義ではありませんか。

投稿2022/11/12 21:16

srsnsts

総合スコア480

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

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

haru0

2022/11/12 21:30

本当にありがとうございます。やっとコードが正常に動いてくれました。このことに気づかずに数時間悪戦苦闘していました。本当に救われた気持ちです笑 ありがとうございました。
srsnsts

2022/11/12 21:31

お役に立てたようでよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問