大文字への変換
CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 23/63。
チャレンジ
簡単前回のレッスンのテキストユーティリティプログラムを拡張して、大文字変換機能を追加しましょう。プログラムは以下の手順で行う必要があります:
Enter a sentence:(末尾に改行なし)と表示して、ユーザーに短い文の入力を促します。- 入力を保存するために、200要素の
sentenceという名前の文字配列を宣言します。 scanfと%sフォーマット指定子を使用して、ユーザーから単一の単語を読み取ります。- 保存された単語を
You entered: [word]の形式で表示します。 strlen()を使用して、単語の総文字数を計算します。- 文字数を
Character count: [count]の形式で表示します。 strlen()を使用した長さをLength: [length]の形式で表示します。- ループを使用して単語内の各文字を反復処理し、母音をカウントします。
- 各文字について、小文字と大文字の両方で母音(a, e, i, o, u)であるかどうかを確認します。
- 見つかった母音の合計数を保持します。
- 母音の数を
Vowel count: [count]の形式で表示します。 Uppercase:と表示した後、ループを使用してtoupper()関数で単語の各文字を大文字に変換して表示します。
strlen() 関数を使用するために <string.h> ヘッダーを、toupper() 関数を使用するために <ctype.h> ヘッダーをインクルードすることを忘れないでください。
toupper() について:
<ctype.h> の toupper() 関数は、単一の文字を対応する大文字に変換します。文字がすでに大文字であるか、文字でない場合は、そのまま返されます。
例:toupper('a') は 'A' を返し、toupper('Z') は 'Z' を返します。
ループ内でこれを使用して、一度に1文字ずつ変換できます:printf("%c", toupper(sentence[i]));
重要: プロンプト Enter a sentence: の後には改行を入れないでください。\n なしで printf("Enter a sentence: "); を使用してください。
出力は以下の形式で表示される必要があります:
Enter a sentence: You entered: [word]
Character count: [count]
Length: [length]
Vowel count: [count]
Uppercase: [WORD]例えば、入力が以下の場合:
Programming出力は以下のようになります:
Enter a sentence: You entered: Programming
Character count: 11
Length: 11
Vowel count: 3
Uppercase: PROGRAMMINGこのチャレンジは、<ctype.h> ライブラリの toupper() 関数を使用した大文字変換機能を追加することで、前回のレッスンをさらに発展させたものです。文字列内の各文字をループで処理し、大文字に変換してから、変換後の結果を表示する必要があります。
自分で試してみよう
#include <stdio.h>
#include <string.h>
int main() {
printf("Enter a sentence: \n");
char sentence[200];
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int char_count = strlen(sentence);
printf("Character count: %d\n", char_count);
int length = strlen(sentence);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < strlen(sentence); i++) {
char c = sentence[i];
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vowel_count++;
}
}
printf("Vowel count: %d\n", vowel_count);
return 0;
}