C言語 変数宣言、算術計算、繰り返し

 今回の演習は、C言語によるプログラミングの初歩を、教科書の例を入力したり、それを修正したりして学習します。
C言語でのプログラミング作業の方法を忘れたものは、C言語の手始め&LaTeX の手始めを参考にせよ。
 以下では、ソースファイルの名前は各自が適当につけること。ただし、C言語ソースファイルは、「.c」で終わるファイル名にすることを忘れないように。

演習課題1

 教科書(プログラミング言語C)P11、華氏と摂氏の対応表を出力するプログラムのソースコードを入力、コンパイル&実行せよ。
 プログラムの実行の結果、P10と同じ表が出力されることを各自確かめること。

#include <stdio.h>

/* fahr=0,20,...,300に対して、華氏−摂氏対応表を印字する */

main()
{
  int fahr, celsius;
  int lower, upper, step;

  lower = 0;    /* 温度表の下限 */
  upper = 300;	/* 上限 */
  step = 20;	/* きざみ */

  fahr = lower;
  while ( fahr <= upper) {
    celsius = 5 * (fahr-32) / 9;
    printf("%d\t%d\n", fahr, celsius);
    fahr = fahr + step;
  }
}

演習課題2

 演習課題1のプログラムを、変数fahr, celsiusfloat で宣言する事で、華氏・摂氏対応表の実数値表示 版のソースコードを作成し、コンパイル&実行せよ(教科書 P15 も参考にすること)。
 また、プログラムの出力結果が以下の様になることを確認すること。

  0  -17.8
 20   -6.7
 40    4.4
 60   15.6
 80   26.7
100   37.8
120   48.9
140   60.0
160   71.1
180   82.2
200   93.3
220  104.4
240  115.6
260  126.7
280  137.8
300  148.9

演習課題3

 演習課題2を修正することで、以下の様な出力が得られるようなプログラムを作成せよ

 Fahr. | Cels.
     0 | -17.8
    10 | -12.2
    20 |  -6.7
    30 |  -1.1
    40 |   4.4
    50 |  10.0
    60 |  15.6
    70 |  21.1
    80 |  26.7
    90 |  32.2
   100 |  37.8
   110 |  43.3
   120 |  48.9
   130 |  54.4
   140 |  60.0
   150 |  65.6

演習課題4

 以下のソースコードは、1から100までの整数を加えその結果を出力するプログラムを記述するものである。 これを入力し、コンパイル&実行せよ。

#include <stdio.h>

main(){
  int k;
  int sum;
  sum = 0;
  for(k=0; k<=100; k++)
    sum = sum+k;
  printf("%d\n",sum);
}

for 文と while

for 構文は、繰り返し制御を行うもので、while 文の一般化となっている。上記のソースコードは、 以下の様に while を用いて、完全に書き換えることが可能である。

#include <stdio.h>

main(){
  int k;
  int sum;
  sum = 0;
  k = 1;
  while( k<=100 ){
    sum += k;
    k++;
  }
  printf("%d\n",sum);
}

代入演算子

C言語では、変数aの値を 計算によって新しい値にしたい場合に、

a = a + 2;

とします。 これにより「(新しい a) = (前の a) + 2 」が実現されます。 計算機が a = a + 2 を処理するときに、 単純な演算に分解して処理すると理解してください。 つまり、最初に a+2 を計算しその値 p = (a+2) を保持します。 次に、a=p という代入演算を行ないます。 つまり、計算機は二つの演算子「+」と「=」の どちらを最初に処理するかという優先順位のルールをもっていて、 変数はその演算に応じて書き換えられていきます。 (注意) a = a + ba = a - b といったタイプの計算は頻繁に行われるので、a += ba -= bといった 省略表現がC言語の代入演算子のバリエーションとして用意されています。

インクリメント演算子

i++i--i = i + 1 (またはi += 1) i = i - 1 (またはi -= 1) という意味で、インクリメント(デクリメント)演算子と 呼ばれます。 前置き++iと後置きi++があり、 i にとっては違いがありませんが、 (++i) の値は i+1 であり、 (i++) の値は i という違いがあります。

演習課題5

演習課題4を修正して、1 から 50 までの奇数の和を計算し、出力するプログラムを作りなさい。

今日の課題

  1. 先週の課題1(LaTeXによるテーラー展開の文章作成)がまだ終了していないものは、それを提出すること。
  2. 演習課題3のソースコードを修正して、結果が逆順(つまり150°Fから始まって0°F)に出力されるようにせよ。


TOP