最終的な出力
CoddyのCジャーニー「論理と制御フロー」セクションの一部。レッスン 24/63。
チャレンジ
簡単前のレッスンで作成したすべての機能を、単一の包括的な出力に統合して、テキストユーティリティプログラムを完成させてください。プログラムでは次のことを行います。
Enter a sentence:を出力して、ユーザーに短い文の入力を促す(末尾に改行を付けない:printf("Enter a sentence: ")を使用し、printf("Enter a sentence: \n")は使用しない)- 入力を格納するため、200個の要素を持つ
sentenceという名前の文字配列を宣言する %sフォーマット指定子とscanfを使用して、ユーザーから1つの単語を読み取る- 表示用に、元の単語を別の文字配列に格納する
strlen()を使用して文字の総数を計算する- 各文字を反復処理し、小文字と大文字の両方で母音(a、e、i、o、u)のいずれかに一致するかを確認して、母音を数える
- ループ内で
toupper()関数を使用して、単語を大文字に変換する - 各情報を別々の行に配置し、すべての結果を見やすく整理された形式で表示する
文字列関数用の <string.h> ヘッダーと、文字変換関数用の <ctype.h> ヘッダーを必ずインクルードしてください。
出力は、次の正確な形式で結果をすべて表示する必要があります。
Enter a sentence: Original: [word]
Characters: [count]
Vowels: [count]
Uppercase: [WORD]重要: プロンプト Enter a sentence: の後に改行を付けてはいけません。単語の入力が読み取られた直後に、Original: という単語が同じ行に表示されます。
たとえば、入力が次のとおりの場合:
Hello出力は次のようになります。
Enter a sentence: Original: Hello
Characters: 5
Vowels: 2
Uppercase: HELLOこの最後のチャレンジでは、プロジェクト全体を通して開発してきたテキスト処理機能をまとめます。具体的には、入力処理、strlen() を使用した文字数のカウント、ループと条件文を使用した母音のカウント、そして toupper() を使用した大文字への変換です。プログラムでは、テキスト分析結果を見やすく整理された概要として表示する必要があります。
自分で試してみよう
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char sentence[200];
printf("Enter a sentence: ");
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int length = strlen(sentence);
printf("Character count: %d\n", length);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < length; 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);
printf("Uppercase: ");
for (int i = 0; i < length; i++) {
printf("%c", toupper(sentence[i]));
}
printf("\n");
return 0;
}論理と制御フローのすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ