はじめての 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
と固定して考えてみると
- /* kotei */
- #include
- main()
- {
- int i, x, y;
- x = 0;
- y = 0;
- for ( i = 0 ; i < (100/2) ; i = i + 1 ) {
- x = x + i;
- y = x * 2;
- }
- printf("1 以上 100 未満の\n");
- printf("すべての 2 の倍数の和は\n");
- printf("%d になります。\n", y);
- }
ただしこれだと max / n がわりきれない場合に問題が起こるので、すこし工夫しないとネ。
上の式を変えていく。
- /* baisuu */
- #include
- main()
- {
- int n, max, i, x, y;
- x = 0;
- y = 0;
- printf("これから 1 以上 max 未満の\n");
- printf("すべての n の倍数の和を\n");
- printf("計算します。\n\n");
- printf("n の数を入力してください n = ");
- scanf("%d", &n);
- printf("max の数を入力してください max = ");
- scanf("%d", &max);
- if (max == (max/n) * n) {
- for ( i = 0 ; i < (max/n) ; i++ ) {
- x += i;
- y = x * n;
- }
- } else {
- for ( i = 0 ; i <= (max/n) ; i++ ) {
- x += i;
- y = x * n;
- }
- }
- printf("\n");
- printf("%d 未満の\n", max);
- printf("すべての %d の倍数の和は\n", n);
- printf("%d になります。\n", y);
- }
text: 金山典世さん(稚内北星)のページ