演習問題3 出題

情報科学1 演習問題3
出題:
2015-06-22
氏名 提出期限: 2015-06-23 18:00
学籍番号
第1問 (1)∼(12)に適切な言葉を入れなさい。
整数を格納する ax という変数を使うためには
(1) ax;
というような宣言(変数の定義)が必要である。定義されない変数を使用するとエラーとなる。
また、初期化していない変数の値は(2)である。
加算を行うための記号は + であり、減算を行うための記号は - である。
乗算を行うための記号は(3)である。除算を行うための記号は(4)である。
整数の演算では(5)を求める演算のために%という記号が使用できる。
整数と整数の除算の結果は整数であり、小数点以下の値は(6)となる。
入力を行うための関数として、scanf がある。
scanfを用いて整数型の値を変数 k に取り込むには
scanf((7));
のようにする.最初の(8)は入力すべき変数が整数型であることを示し,
次の(9)は値を格納する変数が k であることを示している。
表示を行うための関数として printf がある。
printfに渡す最初の実引数は書式制御文字列と呼ばれ、その中には、続く実引数の出力書式を
指定するための変換指定を含むことが出来る。たとえば、整数 int の値を10進数で出力する
ための変換書式は(10)である。%を出力する場合は(11)のように指定する。
また,printfで改行を行うためには(12)を出力書式に加える必要がある。
(1)
int
(2)
不定(予測できない値)
(3)
*
(4)
/
(5)
剰余(余り)
(6)
切り捨て
(7)
"%d",&k
(8)
"%d"
(9)
&k
(10)
(11)
%%
(12)
%d
\n
裏面につづく
#include <stdio.h>
int main(void)
{
int a,b,c;
d = 0;
c = 2;
b = a+c;
printf("%d\t%d\t%d\n",a,b,c);
}
return 0;
第2問 左のプログラムには2つエラーがある。
どのようなエラーかを簡潔に書きなさい。
(1)変数 dが宣言されていない。
(2)変数 a を初期化せずに値を式で
使用している。
(aをdと打ち間違えたと考えればエラ
ーは1つ。しかし、コンパイラはそれ
を知ることは出来ない、また、aを初
期化していないことをコンパイラは指
摘できない)
(教科書 P78∼81 3.1.6 「変数の定義と初期化」)
第3問 以下のプログラムを実行した場合について、答えなさい。(実際に実行してたしかめること。)
(1) aに11、bに4を入力した場合の出力はどの
ようなものになるか答えなさい。
#include <stdio.h>
int main(void)
{
int a,b;
printf("a = ");
scanf("%d",&a);
printf("b = ");
scanf("%d",&b);
printf("a = %d, b = %d\n",a,b);
printf("%d + %d = %d\n",a,b,a+b);
printf("%d - %d = %d\n",a,b,a-b);
printf("%d * %d = %d\n",a,b,a*b);
printf("%d / %d = %d\n",a,b,a/b);
printf("%d %% %d = %d\n",a,b,a%b);
return 0;
}
剰余(余り)は負になることもある
a = 11, b = 4
11 + 4 = 15
11 - 4 = 7
11 * 4 = 44
11 / 4 = 2
11 % 4 = 3
(2) aに-3、bに-6を入力した場合の出力はどの
ようなものなるか答えなさい。
a = -3,
-3 + -6
-3 - -6
-3 * -6
-3 / -6
-3 % -6
b
=
=
=
=
=
= -6
-9
3
18
0
-3
(3) aに4、bに0を入力した場合の出力はどのようなものなるか答えなさい。
a = 4, b = 0
4 + 0 = 4
4 - 0 = 4
4 * 0 = 0
Floating point exception: 8
(4) (3)のように入力するとエラーが発生する。その原因はなにか答えなさい。
0での割り算を行ったため、処理が打ち切られた。