数字を単語に変換するCプログラム
1桁の数字 d が与えられたとき、それを対応する英語の単語に変換するプログラムを考えてみましょう。たとえば d = 5 であれば出力は「Five」になり、d = 6 であれば「Six」と表示されます。さらに、0〜9 の範囲外の値が渡された場合には、範囲外であることを示す適切なメッセージを返します。
解決のアプローチ
この問題は、条件分岐を使って数字ごとに対応する単語を判定するだけで解決できます。手順は次のとおりです。
- solve() という関数を定義し、引数として数字 d を受け取ります。
- d が 0 未満、または 9 より大きい場合は「Beyond range of 0 - 9」(範囲外)というメッセージを出力して処理を終えます。
- それ以外の場合は、d が 0 なら「Zero」、1 なら「One」、2 なら「Two」というように、0〜9 のそれぞれの値に対応する英単語を順番に判定して出力します。
C言語による実装例
まずは if-else 文を使った基本的な実装例を見てみましょう。
#include <stdio.h>
void solve(int d){
if(d < 0 || d > 9){
printf("Beyond range of 0 - 9");
}else if(d == 0){
printf("Zero");
}else if(d == 1){
printf("One");
}else if(d == 2){
printf("Two");
}else if(d == 3){
printf("Three");
}else if(d == 4){
printf("Four");
}else if(d == 5){
printf("Five");
}else if(d == 6){
printf("Six");
}else if(d == 7){
printf("Seven");
}else if(d == 8){
printf("Eight");
}else if(d == 9){
printf("Nine");
}
}
int main(){
int d = 6;
solve(d);
return 0;
}ポイント: 範囲チェックの条件は「d < 0 || d > 9」と OR 条件(||)で書くのが正解です。AND 条件(&&)で書いてしまうと、1つの数が同時に「0未満かつ9より大きい」になることはあり得ないため、この分岐は永遠に成立せず、範囲外の入力に対して何も表示されなくなります。初心者が陥りやすい典型的なミスなので注意しましょう。
switch文を使ったより簡潔な書き方
同じ処理は switch 文を使うと、より読みやすく整理できます。値ごとの分岐が多い場合、switch 文の方が意図が伝わりやすくおすすめです。
#include <stdio.h>
void solve(int d){
switch(d){
case 0: printf("Zero"); break;
case 1: printf("One"); break;
case 2: printf("Two"); break;
case 3: printf("Three"); break;
case 4: printf("Four"); break;
case 5: printf("Five"); break;
case 6: printf("Six"); break;
case 7: printf("Seven"); break;
case 8: printf("Eight"); break;
case 9: printf("Nine"); break;
default: printf("Beyond range of 0 - 9");
}
}
int main(){
int d = 6;
solve(d);
return 0;
}実行結果
入力
6
出力
Six
まとめ
このように、1桁の数字を単語に変換する処理は、条件分岐を組み合わせるだけで簡単に実装できます。if-else 文でも switch 文でも動作は変わりませんが、値ごとの分岐が多くなる場合は switch 文の方がコードの見通しが良くなり、保守もしやすくなります。あわせて、範囲外チェックでは OR 条件を使う点も覚えておきましょう。
-
C言語で華氏を摂氏に変換するプログラムの書き方
華氏から摂氏への変換ロジック華氏(Fahrenheit)から摂氏(Celsius)へ変換するには、以下の数式を使用します。celsius = (fahrenheit - 32)*5/9;この式は、華氏の値から32を引いた後、5/9を掛けることで摂氏の値を求めるものです。例えば、華氏100度は摂氏約37.78度に相当します。アルゴリズム華氏を摂氏に変換するためのアルゴリズムは以下の手順で構成されます。ステップ1: 変数 farh(華氏)と cels(摂氏)を宣言する ステップ2: 実行時に華氏の値を入力する ステップ3: 変換式を適用する cels = (farh-32)*5/9
-
数値を英語の単語に変換するCプログラムの書き方
数値で構成された文字列が与えられたとき、その数値を英語の単語(スペル表記)へ変換するのが本記事の課題です。例えば、入力が「361」であれば、出力は「Three hundred sixty one」となるようにします。この問題を解くためには、一の位・十の位・百の位・千の位など、それぞれの数字がどの桁に位置しているのかを意識することが重要です。なお、今回紹介するコードは最大4桁、つまり0から9999までの数値に対応しています。したがって、入力は0〜9999の範囲である必要があります。例として「1,111」を考えてみましょう。各桁は以下のように対応します。千の位:1(one thousand)百の位