Menu
CoddyTech

最終的な出力

CoddyのCジャーニー「論理と制御フロー」セクションの一部。レッスン 24/63。

challenge icon

チャレンジ

簡単

これまでのレッスンで作成したすべての機能を1つにまとめ、包括的な出力を行うプログラムを完成させましょう。プログラムでは、次のことを行います。

  1. これまでのレッスンと同様に、改行を付けて Enter a sentence: を出力し、ユーザーに短い文の入力を促す
  2. 入力を格納するために、200要素の sentence という名前の文字配列を宣言する
  3. %s 書式指定子を使って scanf でユーザーから1語を読み取る
  4. 表示用に、元の単語を別の文字配列に格納する
  5. strlen() を使って文字数の合計を計算する
  6. 各文字を順に調べ、小文字と大文字の両方について、母音(a、e、i、o、u)のいずれかに一致するかを確認して、母音の数を数える
  7. ループ内で toupper() 関数を使って、単語を大文字に変換する
  8. それぞれの情報を別々の行に表示し、すべての結果を見やすく整理された形式で出力する

文字列関数を使うための <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: \n");
    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オンラインコンパイラ