課題27


  1. たとえば「18歳以上25歳未満で、 身長165センチ以上かつ体重50キロ以上」というような 複雑な条件を表現するには、 複数の関係演算式を組み合わせる必要があります。
    age >= 18「かつ」age < 25「かつ」height > 165「かつ」weight > 50
    
    上の「かつ」のような演算を行うのが「論理演算式」です。
    A && BA と B の両方が真の場合に限り真(論理積)
    A || BA か B のいずれかが真であれば真(論理和)
    !AA が真なら偽、偽なら真(否定)
    上の条件を論理演算式を使って書くと次のようになります。
    age >= 18 && age < 25 && height > 165 && weight > 50
    
  2. ある高校では、国語、数学、英語、社会、理科の5教科のうち 1教科でも30点未満のものがあるか、 または60点未満のものが3教科以上あると 留年させられてしまいます。 以下のソースプログラムはその高校の成績判定プログラムです。 空欄(????)を埋めて、プログラムを完成させてください。

    /*
    ** プログラム名: kadai27
    ** 動作: 成績判定プログラム?
    ** 作者: 自分の名前、学籍番号
    ** 日付: 今日の日付
    */
    #include <stdio.h>
    
    int main(void)
    {
        int mark;       /* 点数   */
        int fuka = 0;   /* 60点未満の教科の数 */
        int daifuka = 0;/* 30点未満の教科の数 */
    
        printf("国語の点数を入れてください:");
        scanf("%d", &mark);
        if (mark < 30) {
            daifuka++;
        }
        else if (mark < 60) {
            fuka++;
        }
    
        printf("数学の点数を入れてください:");
        scanf("%d", &mark);
        if (mark < 30) {
            daifuka++;
        }
        else if (mark < 60) {
            fuka++;
        }
    
        printf("英語の点数を入れてください:");
        scanf("%d", &mark);
        if (mark < 30) {
            daifuka++;
        }
        else if (mark < 60) {
            fuka++;
        }
    
        printf("理科の点数を入れてください:");
        scanf("%d", &mark);
        if (mark < 30) {
            daifuka++;
        }
        else if (mark < 60) {
            fuka++;
        }
    
        printf("社会の点数を入れてください:");
        scanf("%d", &mark);
        if (mark < 30) {
            daifuka++;
        }
        else if (mark < 60) {
            fuka++;
        }
    
        if ( ???? ) {
            printf("留年しなさい。\n");
        }
        else {
            printf("進級させてあげましょう。\n");
        }
    
        return 0;
    }
    

  3. ソースプログラムのファイル名は kadai27.c とし、 それをメールで tokoiまで送ってください。 Subject: は kadai27 としてください。