Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】入力した文字が大文字・小文字・数字・記号のどれかを判定するプログラム

この記事では、キーボードから入力された1文字が英大文字英小文字数字特殊文字(記号)のどれに該当するかを判定するC言語プログラムを紹介します。

判定にはASCIIコード(文字コード)の値を利用します。各文字には固有の数値が割り振られているため、その範囲を調べることで文字の種類を簡単に判別できます。

判定ルールと実行例

  • 入力された文字が英大文字の場合 →「大文字」と表示されます。
例:入力 = H
出力:大文字(Upper Case Letter)
  • 入力された文字が英小文字の場合 →「小文字」と表示されます。
例:入力 = g
出力:小文字(Lower Case Letter)
  • 入力された文字が数字の場合 →「数字」と表示されます。
例:入力 = 3
出力:数字(Number)
  • 入力された文字が特殊文字の場合 →「記号」と表示されます。
例:入力 = &
出力:記号(Symbol)

アルゴリズム

文字の種類を判定するための手順は以下の通りです。

ステップ1 − 実行時にコンソールから1文字読み込みます。

ステップ2 − その文字のASCII値を求めます。

ステップ3 − ASCII値が 65〜90 の範囲内であれば「大文字」と表示します。

ステップ4 − ASCII値が 97〜122 の範囲内であれば「小文字」と表示します。

ステップ5 − ASCII値が 48〜57 の範囲内であれば「数字」と表示します。

ステップ6 − 上記のいずれにも該当しない場合は「記号」と表示します。

サンプルプログラム

以下は、入力された文字が大文字・小文字・数字・特殊文字のいずれであるかを判定するCプログラムです。

#include<stdio.h>
int main(){
    char ch;
    printf("enter a character:");
    scanf("%c",&ch);
    if(ch >= 65 && ch <= 90)
        printf("Upper Case Letter");
    else if(ch >= 97 && ch <= 122)
        printf("Lower Case Letter");
    else if(ch >= 48 && ch <= 57)
        printf("Number");
    else
        printf("Symbol");
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

実行例1:
enter a single character:45
Number

実行例2:
enter a character:#
Symbol

実行例3:
enter a character:M
Upper Case Letter

補足:ctype.h を使った別の判定方法

ASCII値を直接比較する代わりに、標準ライブラリ <ctype.h> に用意されている関数を使うこともできます。isupper()islower()isdigit() などの関数を利用すると、コードの意図がより明確になり可読性が向上します。

#include<stdio.h>
#include<ctype.h>
int main(){
    char ch;
    printf("enter a character:");
    scanf("%c",&ch);
    if(isupper(ch))
        printf("Upper Case Letter");
    else if(islower(ch))
        printf("Lower Case Letter");
    else if(isdigit(ch))
        printf("Number");
    else
        printf("Symbol");
    return 0;
}

どちらの方法でも同じ結果が得られますが、実務では ctype.h の関数を使う方が一般的です。まずはASCIIコードによる判定の仕組みを理解し、その後に関数版へ移行するのが学習におすすめです。

  1. C言語で点がX軸またはY軸に平行かどうかを判定するプログラム

    グラフ上に与えられた n 個の点について、その点群がX軸に平行なのか、Y軸に平行なのか、それともどちらの軸にも平行でないのかを判定する方法を解説します。グラフとは、直角に交わる2つの軸に沿って測定した2つの変数の関係を表す図のことです。「平行」とは、線と線の間隔がどこでも等しい状態を指し、鉄道の線路のように、2本の線がすべての地点で同じ距離を保っている関係をいいます。 つまりここで求めたいのは、「各点の座標と軸との位置関係がすべての点で揃っているかどうか」、すなわち点群がX軸またはY軸に対して平行に並んでいるかどうかという判定です。 軸とは何か グラフはX軸とY軸という2つの軸によって構成さ

  2. Pythonでパスワードの有効性をチェックする方法|正規表現を使った判定プログラム

    パスワードの妥当性チェックは、アプリケーション開発における重要なセキュリティ対策の一つです。本記事では、Pythonのreモジュール(正規表現)を使用して、入力されたパスワードが有効かどうかを判定するプログラムを紹介します。re.search()メソッドを活用することで、アルファベット・数字・特殊文字の検証をシンプルに実装できます。 パスワードの検証ルール(アルゴリズム) 有効なパスワードとみなすためには、以下の条件をすべて満たす必要があります。 Step 1: 英数字で構成された文字列をパスワードとして入力として受け取る Step 2: 文字数が最低8文字以上であることを確認する Step