はじめての C

1 以上 max 未満の n の倍数の和を計算する
プログラムを作成せよ。

まずは基本に戻って
for文の { 中カッコ } のなかで インクリメントと同じように 変数 x に 1 を加えていくには
増分処理に使った くり返し変数 i を利用すること。

  • x = x + i または x += i

変数は つぎの 5つ

  • n : もとの数
  • max : 最大の数
  • i : くりかえす回数 ← これは max / n になる
  • x : n にかける数
  • y : n の倍数

n と max は変数だが、式の中では変化しないので、仮りに

  • max = 100
  • n = 2

と固定して考えてみると

  1. /* kotei */
  2. #include
  3. main()
  4. {
  5. int i, x, y;
  6. x = 0;
  7. y = 0;
  8. for ( i = 0 ; i < (100/2) ; i = i + 1 ) {
  9. x = x + i;
  10. y = x * 2;
  11. }
  12. printf("1 以上 100 未満の\n");
  13. printf("すべての 2 の倍数の和は\n");
  14. printf("%d になります。\n", y);
  15. }

ただしこれだと max / n がわりきれない場合に問題が起こるので、すこし工夫しないとネ。

上の式を変えていく。

  1. /* baisuu */
  2. #include
  3. main()
  4. {
  5. int n, max, i, x, y;
  6. x = 0;
  7. y = 0;
  8. printf("これから 1 以上 max 未満の\n");
  9. printf("すべての n の倍数の和を\n");
  10. printf("計算します。\n\n");
  11. printf("n の数を入力してください n = ");
  12. scanf("%d", &n);
  13. printf("max の数を入力してください max = ");
  14. scanf("%d", &max);
  15. if (max == (max/n) * n) {
  16. for ( i = 0 ; i < (max/n) ; i++ ) {
  17. x += i;
  18. y = x * n;
  19. }
  20. } else {
  21. for ( i = 0 ; i <= (max/n) ; i++ ) {
  22. x += i;
  23. y = x * n;
  24. }
  25. }
  26. printf("\n");
  27. printf("%d 未満の\n", max);
  28. printf("すべての %d の倍数の和は\n", n);
  29. printf("%d になります。\n", y);
  30. }

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