C言語で文字列を大文字・小文字に変換するプログラムの書き方
C言語で文字列を大文字に変換するプログラムは以下のとおりです。ASCIIコードの特性を利用したシンプルな方法なので、初心者の方にもわかりやすい内容となっています。
例:小文字から大文字への変換
#include <stdio.h>
#include <string.h>
int main() {
char s[100];
int i;
printf("\nEnter a string : ");
gets(s);
for (i = 0; s[i]!='\0'; i++) {
if(s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 32;
}
}
printf("\nString in Upper Case = %s", s);
return 0;
}
実行結果
このプログラムを実行すると、次のような出力が得られます。
Enter a string : hello world! String in Upper Case = HELLO WORLD!
プログラムの解説
このプログラムでは、文字列を大文字に変換する処理がmain()関数内に記述されています。まず、ユーザーが入力した文字列を格納するためのchar型配列 s[100] を宣言します。
次に、forループを使って文字列の先頭から終端文字('\0')までを1文字ずつ調べます。if文でその文字が小文字('a'〜'z')であるかどうかを判定し、小文字であればASCIIコード値から32を引くことで、対応する大文字に変換しています。
for (i = 0; s[i]!='\0'; i++) {
if(s[i] >= 'a' && s[i] <= 'z') {
s[i] = s[i] - 32;
}
}
これは、ASCIIコードにおいて英小文字と英大文字のコード値が常に32だけ異なるという性質を利用したテクニックです。たとえば「a」(97)から32を引くと「A」(65)になります。
続いて、逆に文字列を小文字に変換するC言語のプログラムを紹介します。
例:大文字から小文字への変換
#include <stdio.h>
#include <string.h>
int main() {
char s[100];
int i;
printf("\nEnter a string : ");
gets(s);
for (i = 0; s[i]!='\0'; i++) {
if(s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] + 32;
}
}
printf("\nString in Lower Case = %s", s);
return 0;
}
実行結果
このプログラムを実行すると、次のような出力が得られます。
Enter a string : HELLOWORLD String in Lower Case = helloworld
プログラムの解説
こちらのプログラムでも、変換処理はmain()関数内に記述されています。char型配列 s[100] にユーザーが入力した文字列を格納し、forループで各文字を順番にチェックしていきます。
if文によって文字が大文字('A'〜'Z')かどうかを判定し、大文字であればASCIIコード値に32を加算することで、対応する小文字へと変換します。
for (i = 0; s[i]!='\0'; i++) {
if(s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] + 32;
}
}
補足:gets()関数の使用について
なお、上記サンプルコードで使用しているgets()関数は、入力サイズを制限できないためバッファオーバーフローの危険性があり、C11規格では標準ライブラリから削除されました。実際の開発では、fgets()など安全な入力関数を使用することをおすすめします。また、標準ライブラリのtoupper()やtolower()関数(ctype.hヘッダ)を使えば、同様の変換をより簡潔かつ安全に実装できます。
-
C++で直方体の体積と表面積を計算するプログラムの作成方法
直方体とは? 直方体とは、6つの長方形の面から構成される三次元の立体図形です。各面の縦と横の長さが異なるため、全体として異なる長さの辺を持っています。立方体と直方体の違いは、立方体では長さ・高さ・幅がすべて等しいのに対し、直方体ではこれら3つが必ずしも同じではないという点です。 直方体の主な性質は以下のとおりです。 6つの面 12本の辺 8つの頂点 以下は直方体のイメージ図です。 問題の概要 直方体の長さ(L)、幅(W)、高さ(H)が与えられたとき、その総表面積と体積を求めるのが課題です。表面積とは各面が占める空間の広さのことであり、体積とはその形状が内包できる空間の大きさのことです。
-
C++で立方体の体積と表面積を求めるプログラム
立方体とは? 立方体とは、正方形の面を6つ持つ三次元の立体図形です。すべての辺の長さが等しいという特徴があります。立方体は唯一の正六面体であり、以下のような性質を持ちます。 面の数:6つ 辺の数:12本 頂点の数:8つ 以下は立方体の図です。 問題の概要 立方体の一辺の長さが与えられたとき、その立方体の表面積と体積を求めることが課題です。ここで、表面積とは立方体の各面が占める面積の合計を指し、体積とはその図形が内包できる空間の大きさを指します。 立方体の表面積と体積を計算するには、次の公式を使用します。 表面積 = 6 × 辺 × 辺 体積 = 辺 × 辺 × 辺 入力例と出力例 入力