はじめての C

1 から 100 までの数を足して 合計のみを表示するプログラムを作成せよ。

  1. /* tasizan */
  2. #include
  3. main()
  4. {
  5. int x, i;
  6. x = 0;
  7. printf("1 から 100 までの数を足すと?\n\n");
  8. for ( i = 0; i <= 100; i++ ) {
  9. x = x + i;
  10. }
  11. /* 合計の表示はループを抜けた後で */
  12. printf("合計は %d です。\n", x);
  13. }

900000円の中古車をローンで買った。金利複利で年3%である。毎月の支払い限度額を20000円としたら
支払いには何年かかるのか ?
そして 毎月の返済額はいくらか ? を
表示するプログラムをつくること。

変数は下の4つ

  • x : 中古車の価格
  • y : 支払い期間 (年)
  • p : 月払いの限度額
  • q : 1ヶ月の支払い額
  1. /* hensai */
  2. #include
  3. main()
  4. {
  5. int x, y, p, q;
  6. x = 900000;
  7. p = 20000;
  8. printf("中古車の価格 : 900000円\n");
  9. printf("毎月の支払い限度額 : 20000円\n");
  10. printf("金利 : 複利で年3%\n\n");
  11. printf("返済には何年かかるの? それに毎月の支払い額はいくらなの?\n\n");
  12. for ( y = 1 ; ; y = y + 1 ) {
  13. x = x * 1.03;
  14. q = x / (y * 12);
  15. if (p >= q) {
  16. break;
  17. }
  18. }
  19. /*1ヶ月の支払い額(q)が限度額(p)を上回ったらループを抜ける */
  20. printf("支払いには %d 年かかります。\n, y");
  21. printf("毎月の返済額は %d 円になります。\n, q");
  22. }

ループを抜けた時点では変数 q は p を上回ってるけど、for文は実行されずに終了するのだから、変数 q (それに変数 y も) はループを抜ける直前の数値になる。
↑これでよかった ?

あと、for文に含まれる if文の条件は

  • この条件でプログラムを実行せよ、ただし
  • 条件が満たされなくなった時点で for文を抜ける

というこのなので 普通の if文の条件とは性格が違う(条件のなかに含まれる変数値が変化する)。
上の例でいえば、支払い額(q)が限度額(p)を上回ったら というところで
if (p < q) {
と書いてしまいそうになるので注意 !!

break の前の if文の条件は

  • (for文の)実行条件であって
  • for文を抜ける(breakする)条件ではない

ということですネ。

text: 金山典世さん(稚内北星)のページ