課題6
以下の課題に関するレポートを、buturi-johoshori@tiger.kobe-u.ac.jp
までメイルで送りなさい
メイルのsubjectは、report6 とし
レポートの一番最初に、氏名、学籍番号を記すこと
送付するのは、ソースコード(実行ファイルは不要)、ただしソースコードのファイル名として 学籍番号-6b4.c などとして添付せよ。
6−A:
計算機の内部の演算は2進数で行われることを講義の部分で説明した。通常、C言語の整数型 int
は符号なし整数型である。
これらは以下のように符号あり、符号なし、桁数(2進数でいうところの桁数)によって4つに分けられる。
短い整数は 16桁の2進数で表され、倍精度の整数は 32桁の2進数で表される。
次の問いに答えよ。
1) 符号なし整数は unsigned int
と表される。内部的には16桁の2進数で表され、16進数では 0000H 〜 FFFFHと表されるが、10進数での範囲は0からどこまでか?
2) 符号あり整数は singned int
と表される。符号なし整数の半分の値がマイナスの値となり、半分の値がプラスの値となっている。10進数で表すと範囲はどこからどこまでか?
3) 符号なし倍精度の整数は unsigned long
int と表される。内部的には32桁の2進数で表され、16進数では、00000000H 〜
FFFFFFFFHと表されるが、10進数での範囲は0からどこまでか?
4) 符号あり整数は singned long
int と表される。符号なし倍精度の整数の半分の値がマイナスの値となり、半分の値がプラスの値となっている。10進数で表すと範囲はどこからどこま
でか?
6−B:singned short int等にすれば動くが、出題ミスなのでこの問いは無効にする。
先ほどの整数の表現をプログラム中で明示的に指定することもできる。
演習6-2で作ったプログラムの以下の部分
int n, i, s=1;
を以下のように変えてコンパイルし、(以下は符号なし整数の例、それぞれの問題にあわせて型を変えるて答えること)
int n, i;
unsigned int s=1;
1) 符号なし整数では幾つの階乗まで正しく計算できるか答えよ。
2) 符号あり整数では幾つの階乗まで正しく計算できるか答えよ。
3) 符号なし倍精度整数では幾つの階乗まで正しく計算できるか答えよ。
4) 符号あり倍精度整数では幾つの階乗まで正しく計算できるか答えよ。この問いに用いたプログラムを添付すること。
6−C:
3辺の長さが
a = 12.0
b = 9.0
c = 15.0
の3角形の面積を求めるプログラムを作成しなさい。
数学的background:
3辺の長さがa, b,
cである3角形の面積Sを求めるにはヘロンの公式を用いるとよい。
ヘロンの公式
注意:平方根を求めるには、関数 double sqrt(double) を使用する。この場合、
#include
<math.h>
をプログラムの先頭に記し、コンパイルオプション -lm をつけてコンパイル
gcc -lm -o
report6c report6c.c
とすること。