2009年度 情報科学&情報科学演習 ~ 世界のナベアツに挑戦 ~ 担当教員: 幸山 直人 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム 主要部分を抜粋 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 型の性質を上手く利用 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(1-1) i=1の場合(ループ1) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(1-2) i=1の場合(ループ2) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 1 0 0 1 1 0 0 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(3-1) i=3の場合(ループ1) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 3 3 3 3 3 3 3 0 0 3 3 3 3 3 0 0 0 0 0 1 1 3 3 3 3 1 1 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(13-1) i=13の場合(ループ1) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 13 13 13 13 13 13 13 0 0 13 13 13 13 13 0 0 0 0 0 1 1 13 13 13 13 1 1 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(16-1) i=16の場合(ループ1) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 16 16 16 16 16 0 0 16 16 16 0 0 0 0 0 16 16 1 1 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(16-2) i=16の場合(ループ2) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 16 16 1 1 0 0 16 16 0 0 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(16-3) i=16の場合(ループ3) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 16 0 0 16 16 0 0 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(35-1) i=35の場合(ループ1) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 35 35 35 35 35 0 0 35 35 35 0 0 0 0 0 35 35 3 3 0 0 exercise0207.c 2009年度 情報科学&情報科学演習 3の付く数字を表示するプログラム(35-2) i=35の場合(ループ2) i 9: for (i = 1; i <= 40; i++) { 10: flag = 0; 11: tmp = i; 12: while (tmp != 0) { 13: if (((tmp - 3) % 10) == 0) { 14: flag = 1; 15: break; 16: } 17: tmp = tmp / 10; 18: } 19: if (flag == 1) printf("%d\n", i); 20: } tmp flag 35 35 35 35 3 3 3 3 0 0 1 1 35 35 3 3 1 1 exercise0207.c 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム? レポートに多く見られた解答 for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } else if ((tmp % 3) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } ←3の倍数のとき flag=1 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム?(検証) i=68の場合(ループ1) for (i = 1; i <= 100; i++) { flag = 0; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } else if ((tmp % 3) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } i tmp flag 68 68 68 68 68 68 68 68 0 0 0 0 68 68 0 68 68 6 6 0 0 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム?(検証) i=68の場合(ループ2) for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } else if ((tmp % 3) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } i tmp flag 68 68 6 6 0 0 68 68 68 6 6 6 0 1 1 68 68 6 6 1 1 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(ベスト) for (i = 1; i <= 40; i++) { flag = 0; if ((i % 3) == 0) { flag = 1; } else { tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } } if (flag == 1) printf("%d\n", i); } 3の倍数 3の付く数字 exercise0208.c 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(1) for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } else if ((i % 3) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(1’) for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if ((i % 3) == 0) { flag = 1; break; } else if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(2) for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if ((i % 3) == 0) { flag = 1; break; } if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(3) for (i = 1; i <= 40; i++) { flag = 0; if ((i % 3) == 0) flag = 1; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } *3の倍数であっても、さらに3の付く数字であるかを評 価しているので無駄が多い 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(4) for (i = 1; i <= 40; i++) { flag = 0; tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0 || (i % 3) == 0) { flag = 1; break; } tmp = tmp / 10; } if (flag == 1) printf("%d\n", i); } 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(ベスト) for (i = 1; i <= 40; i++) { flag = 0; if ((i % 3) == 0) { flag = 1; } else { tmp = i; while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } } if (flag == 1) printf("%d\n", i); } 3の倍数 3の付く数字 exercise0208.c 2009年度 情報科学&情報科学演習 3の倍数と3の付く数字を表示するプログラム(トレース) for (i = 1; i <= 40; i++) { flag = 0; if ((i % 3) == 0) { flag = 1; } 数値をチェック(トレース) else { tmp = i; printf("i=%d: tmp=%d: flag=%d\n", i, tmp, flag); while (tmp != 0) { if (((tmp - 3) % 10) == 0) { flag = 1; break; } tmp = tmp / 10; } } if (flag == 1) printf("%d\n", i); exercise0208.c } 2009年度 情報科学&情報科学演習 最大公約数を求めるプログラム 練習:変数 x, y, t をトレースしなさい 5: 6: 7: 8: 9: 10: 11: 12: 13: int x = 1234, y = 56, t; printf("gcd(%d,%d)=", x, y); while (y != 0) { t = x; x = y; y = t % x; } printf("%d\n", x); report0401.c
© Copyright 2024 ExpyDoc