演習課題 ex05-2.c

キーボードから整数値 a を入力すると、$a^3$ の値を出力することを繰り返すプログラムを作成しなさい。ただし、入力された a の値が 0 未満のときは繰り返しを終了し、また、a の値が3の倍数のときは何も出力しないものとする。 このようなプログラム ex05-2.c を作成し、kiso2コマンドを用いて提出しなさい。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-2
a? 0
a? 3
a? 6
a? 7
343
a? 8
512
a? 9
a? 10
1000
a? -1

演習課題 ex05-3.c

キーボードから整数値 n を入力すると、1! から n! までの階乗の値を出力するプログラム ex05-3.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、階乗を計算する整数型の変数は long 型の変数として定義すること。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-3
n? 0
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-3
n? -1
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-3
n? 1
1! = 1
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-3
n? 5
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-3
n? 20
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
long 型の変数を printf() 関数で出力するときの変換指定子は %ld です。

演習課題 ex05-4.c

キーボードから整数値 n を入力すると、1 から n までの値を順に出力するプログラムを作成したい。 ただし、出力する値が 3 の倍数のときは値の代わりに Fizz を出力し、5 の倍数のときは値の代わりに Buzz を出力する。 また、出力する値が 3 と 5 の倍数のときは、値の代わりに FizzBuzz と出力する。 このようなプログラム ex05-4.c を作成し、kiso2コマンドを用いて提出しなさい。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-4
n? 0
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-4
n? -1
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-4
n? 16
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16

演習課題 ex05-5.c

キーボードから自然数 iN の値を入力すると、$$\sum_{k=i}^N k^2$$ の値を計算して出力するプログラム ex05-5.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、i, N の入力と総和の計算は繰り返し行い、i または、N に 0 以下の値が入力されるとプログラムは終了するものとする。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-5
i N? 1 2
5
i N? 3 4
25
i N? 1 4
30
i N? 1 100
338350
i N? 1 50
42925
i N? 51 100
295425
i N? 99 1000
333514951
i N? 0 1

演習課題 ex05-6.c

キーボードから三角形の各辺の長さ a, b, c を実数値として入力すると、この三角形が直角三角形であるかどうかを判定するプログラム ex05-6.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、a, b, c の値のいずれかが正の値でない場合、あるいは、三角形を構成できない組み合わせ(たとえば、$a=1, b=2, c=3)が入力された場合は、「三角形ではない」と出力するものとする。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 3 2 1
三角形ではない
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 2 1 0
三角形ではない
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 2 3 4
直角三角形ではない
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 3 4 5
直角三角形である
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 1 2.3 2.4
直角三角形ではない
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-6
a b c? 6.3 8.4 10.5
直角三角形である

a, b, c の3つの辺の長さが与えられたとき、この三角形が直角三角形となる条件は次のいずれかである。

  1. $a^2 = b^2 + c^2$ または、$b^2 = c^2 + a^2$ または、$c^2 = a^2 + b^2$
  2. もっとも大きな値を a としたとき、$a^2 = b^2 + c^2$

変数の値の交換

左右ぞれぞれの手に中身の入った熱いラーメンどんぶりを一つずつもっていると想像してみてください。 左右のどんぶりを持ち替えようとしたとき、アクロバティックな方法(どんぶりを宙に放ったり)を取らない限り、2つの熱いどんぶりを同時に交換することはできません。 オーソドックスには、いったん片方のどんぶりをテーブルの上に置き、もう一つのどんぶりを持ち替え、最後に空いた方の手で一旦テーブルに置いたどんぶりを持つ、といった方法で持ち替えると思います。

変数 x の値と、変数 y の値を交換する

int x, y, buf;
x = 1;
y = 2;
 
buf = x;      // x の値をいったん buf に代入
// x = 1, y = 2, buf = 1
 
x = y;        // y の値を x に代入(x の値は上書きされる)
// x = 2, y = 2, buf = 1
 
y = buf;     // buf にある元の x の値を y に代入
// x = 2, y = 1, buf = 1

演習課題 ex05-7.c

2次方程式 $ax^2 + bx + c = 0$ の係数 $a, b, c$ をdouble 型の実数値として入力すると、その実数解を出力するプログラム ex05-7.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、入力された係数をもつ2次方程式が実数解をもたない場合は「実数解はない」と出力するものとする。また、2次の係数 a が 0 であるときの処理は考えなくても良い。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 0 0 0
x = -nan
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 0 1 2
x = -nan, -inf
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 1 -2 1
x = 1.000000
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 2 1 0
x = 0.000000, -0.500000
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 2 3 1
x = -0.500000, -1.000000
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 1 0 -3
x = 1.732051, -1.732051
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? -1 1 1
x = -0.618034, 1.618034
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 3 2 -1
x = 0.333333, -1.000000
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 1 2 3
実数解はありません
t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-7
a b c? 1 1 1
実数解はありません

演習課題 ex05-8.c

2次方程式 $ax^2 + bx + c = 0$ の係数 $a, b, c$ をdouble 型の実数値として入力すると、その解を出力するプログラム ex05-8.c を作成し、kiso2コマンドを用いて提出しなさい。 ただし、作成するプログラムは以下の条件を満たすものとする。

  1. 係数の入力と解の出力は、係数 a, b, c 全ての値にとして 0 が入力されるまで繰り返し行われる。
  2. 2次の係数 a の値に 0 が入力された場合は何も出力せず、すべての係数の入力が再度行われる。
  3. 方程式が虚数解を持つ場合は、実部 + 虚部 i の形式で解の値を出力する。

実行例:

t180900@s01cd0542-160:~/kiso2-2018/ex05$ ./ex05-8
a b c? 0 2 3
a b c? 1 2 3
x = -1.000000 + 1.414214 i, -1.000000 - 1.414214 i
a b c? 3 2 -1
x = 0.333333, -1.000000
a b c? 0 0 0
  • lecture/kiso2/ex05.txt
  • 最終更新: 2018/10/25 16:26
  • by sano