Ex04Ans

From Prog0

Jump to: navigation, search

演習第4回

Contents

解答例

A問題

A-1 条件式

ファイル名: ex04a1.txt

条件式1は真
条件式2は真
条件式5は真
条件式8は真
条件式9は真

A-2 奇数と偶数の判別

ファイル名: ex04a2.c

#include <stdio.h>

int main()
{
 int a;
 printf("整数を入力してください ");
 scanf("%d", &a);

 if ( a % 2 == 1) printf("%dは奇数です\n", a);     /* 別解:  if ( a % 2 )  printf("%dは奇数です\n", a);    */
 else printf("%dは偶数です\n", a);

 return 0;
}

A-3 switch caseによる振り分け

ファイル名: ex04a3.c

#include <stdio.h>
int main()
{
  int id, han;

  printf("学籍番号の下三桁を入力してください(例: 001) ");
  scanf("%d", &id);/*三桁の数値'00x'は'x'として読むことができます*/

  han = id % 5;

  switch( han ){
  case 1:
      printf("この人はA班です\n");
      break;
  case 2:
      printf("この人はB班です\n");
      break;
  case 3:
      printf("この人はC班です\n");
      break;
  case 4:
      printf("この人はD班です\n");
      break;
  case 0:
      printf("この人はE班です\n");
      break;
  }
  return 0;
}

B問題

B-1 平均値と成績の表示(複合条件問題)

ファイル名: ex04b1.c

#include <stdio.h>
int main()
{
 int ms,ps,es; /*score*/
 double average;     /*average of 3 scores*/

 printf("数学と物理と英語の点数を入力してください\n");
 scanf("%d%d%d", &ms, &ps, &es);
 
 average = (double)(ms+ps+es)/3;
 printf("3科目の平均値は");
 printf("%6.2f 点です。\n", average);

 if (average >= 80 || ms == 100 || ps == 100 || es == 100) printf("成績は優です。\n");
 else if (average < 80 && average >= 60) printf("成績は良です。\n");
 else if (average < 60 && average >= 40) printf("成績は可です。\n");
 else printf("成績は不可です。\n");
 
 return 0;
}

B-2 曜日の判別

ファイル名: ex04b2.c

#include <stdio.h>

int main()
{
  int year, month, day, dayofweek;

  printf("年月日を入力して下さい ");
  scanf("%d%d%d", &year, &month, &day);

  if (month < 3) {
    year--;       /* year=year-1; と同じです。(第5回講義参照) */
    month += 12;  /* month=month+12; と同じ。(第5回講義参照) */
  }
  dayofweek = (year + year/4 - year/100 + year/400 +
    (13*month + 8)/5 + day)%7;

  switch (dayofweek) {
  case 0:
    printf("日曜日\n");
    break;
  case 1:
    printf("月曜日\n");
   break;
  case 2:
    printf("火曜日\n");
    break;
  case 3:
    printf("水曜日\n");
    break;
  case 4:
    printf("木曜日\n");
    break;
  case 5:
    printf("金曜日\n");
    break;
  case 6:
    printf("土曜日\n");
    break;
  }

  return 0;
}

B-3 breakを省略したswitch文

ファイル名: ex04b3.c

#include <stdio.h>

int main()
{
  int month;

  printf("月を入力してください:");
  scanf("%d",&month);

  switch(month)
  {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      printf("%d月は31日間あります\n", month);
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      printf("%d月は30日間あります\n", month);
      break;
    case 2:
      printf("%d月は28日間、または29日間です\n", month);
      break;
    default:
      printf("%d月は存在しません\n", month);
      break;
  } 

  return 0;
}

Extra問題

E-1 宅配便の運賃

ファイル名: ex04e1.c

#include <stdio.h>

int main()
{
  int size;     /* サイズ分類 */
  int region;   /* 発送先 */

  printf( "サイズを入力してください( 小...1, 中...2, 大..3 ) " );
  scanf( "%d", &size );

  printf( "行き先を入力してください(福島県内...1, 宮城県...2、山形県...3, 岩手県...4, 秋田県...5, 青森県...6 " );
  scanf( "%d", &region );

  switch( size ) {
  case 1:   /* 小 */
    switch( region ) {
    case 1:  /* 福島県内 */
        printf( "運賃は %d円です\n", 800 );
        break;
    case 2:  /* 宮城県 */
        printf( "運賃は %d円です\n", 1000 );
        break;
    case 3:  /* 山形県 */
        printf( "運賃は %d円です\n", 1000 );
        break;
    case 4:  /* 岩手県 */
        printf( "運賃は %d円です\n", 1200 );
        break;
    case 5:  /* 秋田県 */
        printf( "運賃は %d円です\n", 1400 );
        break;
    case 6:  /* 青森県 */
        printf( "運賃は %d円です\n", 1600 );
        break;
    default: 
        printf( "地域の番号が不正です\n" );
        break;
    }
    break;

    case 2:   /* 中 */
    switch( region ) {
    case 1:  /* 福島県内 */
        printf( "運賃は %d円です\n", 1000 );
        break;
    case 2:  /* 宮城県 */
        printf( "運賃は %d円です\n", 1200 );
        break;
    case 3:  /* 山形県 */
        printf( "運賃は %d円です\n", 1200 );
        break;
    case 4:  /* 岩手県 */
        printf( "運賃は %d円です\n", 1400 );
        break;
    case 5:  /* 秋田県 */
        printf( "運賃は %d円です\n", 1600 );
        break;
    case 6:  /* 青森県 */
        printf( "運賃は %d円です\n", 1800 );
        break;
    default: 
        printf( "地域の番号が不正です\n" );
        break;
    }
    break;

    case 3:   /* 大 */
    switch( region ) {
    case 1:  /* 福島県内 */
        printf( "運賃は %d円です\n", 1200 );
        break;
    case 2:  /* 宮城県 */
        printf( "運賃は %d円です\n", 1400 );
        break;
    case 3:  /* 山形県 */
        printf( "運賃は %d円です\n", 1400 );
        break;
    case 4:  /* 岩手県 */
        printf( "運賃は %d円です\n", 1600 );
        break;
    case 5:  /* 秋田県 */
        printf( "運賃は %d円です\n", 1800 );
        break;
    case 6:  /* 青森県 */
        printf( "運賃は %d円です\n", 2000 );
        break;
    default: 
        printf( "地域の番号が不正です\n" );
        break;
    }
    break;
  
    default:
      printf( "サイズの番号が不正です\n" );
    }
    return 0;
 }
Personal tools