Ex04Ans
From Prog0
演習第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", ®ion ); 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; }