Previous: インクリメント・デクリメント
Up: 特別な演算子
Next: 復習
Previous Page: 式中での使用
Next Page: 復習

式の縮約表現

四則演算に関する式においては、しばしば a の値を2増やすとか、b の値を 2倍にするといった処理が必要とされる。先のセクションで我々は、1増やすとか 1減らす場合には簡単な表現があることを学んだが、一般的にある変数の値を 変更するための簡潔な表現が別に用意されている。

例えば、a の値を2倍にする場合、通常 a = a * 2; と書くところを、 a *= 2 と書くことが出来る。

 

一般に、

var = var opr (exp)

var opr= exp

と書くことが出来る。 ( var は変数。 opr は演算子。 exp は式。)

ここで、式に丸括弧がついている点に注意しなければならない。つまり、 a *= x + y; は、a = a * x + y; となるのではなく、 a = a * ( x + y ); と同じ意味だと言うことである。

色々な例
                a += 2;
                a -= 4;
                a *= 2;
                a /= 2;
                a *= b++;

この様な式の縮約表現はすべての演算子について使用可能なのではなく、使用できる ものは制限されているが、当面四則演算には使えることを知っていれば十分である。

課題7

cd c を実行した後で( /c に移動した後で)、以下の課題を やってみよ。

課題 7.1
倍数の足し算

1 以上 n 未満のすべての m の倍数の足し算を計算するプログラムを作成せよ。 n, m はキーボードから入力できるようにし、少なくとも、 n = 100, m = 2 と n = 1000, m = 3 については実行してみよ。 結果はそれぞれ、2450 と 166833 になる。

課題 7.2
九九の表を作る

九九の表を for 文を用いて作成せよ。 結果は以下の様になるようにせよ。

  1        2        3        4        5        6        7        8        9
------------------------------------------------------------------------------
1| 1        2        3        4        5        6        7        8        9
2| 2        4        6        8        10       12       14       16       18
...
但し、出力する数値の桁をそろえるために以下のようにタブを使え。
printf("\t%d",a);
注意 \t は画面にタブを表示するときに使う。タブは、画面上では、8桁の 空白に相当するが、数値をそろえるときに使うと有効である。

 

ヒント 最低2つの for 文を入れ子にする必要がある。

...
                for (i=1; i<10; i++){
                        printf("%d|",i);
                        for (j=1; j<10; j++){
                                ...
                        }
                        printf("\n");
                }

課題 7.3
整数の辺の直角三角形

3辺が整数で直角三角形になるものを調べて出力するプログラムを作成せよ。 但し、辺の長さは最大で100までとする。

ヒント 全ての場合を尽くす必要はなく、斜辺の長さが50の場合は、その他の 辺は50より小さくなくてはならない。従って、次のようにループを作ればよい。

for ( a=1; a<=100; a++){
                 for ( b=1; b<=a; b++){
                         for ( c=1; c<=b; c++){
                             /* ここで三角形が成立しているかどうかを調べて、*/
                             /* 更に直角三角形だったら三辺を出力する。      */
                         }
                 }
         }
つまり、 という前提をおいても構わない点に着目している。 三角形の成立条件と、直角三角形の成立条件は課題 6.2, 6.3 を参照せよ。

 

参考 実は、更にループで実行される回数を減らすことが出来る。時間があれば それについても考察してみよ。

 

作成したプログラムをメイルで、金山まで送ること。但し、題は kadai7 と すること。

maruyama@wakhok.ac.jp
1995年02月08日 (水) 18時57分57秒 JST