Menu
Coddy logo textTech

プロジェクト:連絡先の構造体を定義する

CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 50/63。

challenge icon

チャレンジ

簡単

構造体が実世界のアプリケーションでどのように関連データを整理できるかを示す、シンプルな連絡先入力ツールを作成します。

連絡先情報を保存するための Contact 構造体を定義するC言語のプログラムを作成してください。プログラムは以下の要件を満たす必要があります:

  1. 以下のメンバを持つ Contact という名前の struct を定義します:
    • 連絡先の名前を保存するためのサイズ50の文字配列 name
    • 連絡先の電話番号を保存するためのサイズ20の文字配列 phone
    • 連絡先のメールアドレスを保存するためのサイズ40の文字配列 email
    • 連絡先の年齢を保存するための整数 age
  2. main関数内で:
    • person という名前の Contact 変数を作成します
    • 以下の入力値を読み取り、ドット演算子を使用して構造体のメンバに代入します:
      • 名前の文字列を読み取り、person.name に代入します
      • 電話番号の文字列を読み取り、person.phone に代入します
      • メールアドレスの文字列を読み取り、person.email に代入します
      • 年齢の整数を読み取り、person.age に代入します
    • すべての値を読み取った後、以下のバリデーションチェックを実行します:
      • 年齢が0未満または120より大きい場合は、Invalid age と出力してプログラムを終了します
      • 電話番号の長さが10文字未満の場合は、Invalid phone number と出力してプログラムを終了します
    • すべてのバリデーションを通過した場合は、連絡先情報を以下の正確な形式で出力します:
      • Contact Information:
      • Name: [name]
      • Phone: [phone]
      • Email: [email]
      • Age: [age]
    • 追加情報を計算して出力します:
      • strlen() を使用して名前の長さを次の形式で出力します:Name length: [length]
      • 年齢のカテゴリを判定して出力します:
        • 年齢が0から17の間の場合:Category: Minor
        • 年齢が18から64の間の場合:Category: Adult
        • 年齢が65以上の場合:Category: Senior

このチャレンジでは、構造体の定義、適切なデータ型とサイズによるメンバの宣言、ドット演算子を使用した構造体メンバへのアクセス、入力バリデーション、および構造体メンバに対する strlen() などの文字列関数の使用に関する理解をテストします。連絡先管理システムの基礎となるような、実用的なデータ構造の作成を練習します。

自分で試してみよう

#include <stdio.h>
#include <string.h>

// TODO: ここで Contact 構造体を定義します

int main() {
    // TODO: person という名前の Contact 変数を作成します
    
    // 入力値を読み取ります
    scanf("%s", /* TODO: person.name に割り当てます */);
    scanf("%s", /* TODO: person.phone に割り当てます */);
    scanf("%s", /* TODO: person.email に割り当てます */);
    scanf("%d", /* TODO: person.age に割り当てます */);
    
    // TODO: 以下にバリデーションと出力のコードを記述してください
    
    return 0;
}

Logic & Flowのすべてのレッスン