以下の問に答えよ。
下に示すように、正の整数 n をキーボードから受け取って、1 から n までの整数を空白で区切って表示するが、
2 でも 3 でも割り切れない整数
は数の代わりに、*
を表示するプログラムを作成せよ。
(n として負の数または 0 を受け取ったときは、改行のみ表示するか、もしくは何も表示しなくてよい。)
正の整数を入力してください: 4↵
* 2 3 4
実行例 2:
正の整数を入力してください: 15↵
* 2 3 4 * 6 * 8 9 10 * 12 * 14 15
実行例 3:
正の整数を入力してください: 0↵
実行例 4:
正の整数を入力してください: 1↵
*
下に示すように、0 以上の段数 n
をキーボードから受け取って、
ディスプレイ上に、一辺の長さが n
の左上直角三角形を表示するプログラムを作成せよ。
ただし、4 の倍数行目の下には空行を挿入せよ。
文字は行ごとに 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, の繰り返しで、行の最後の字が 1 になるように表示せよ。
また、一番最後に(4 の倍数行目の下以外に余分な空行を開けずに)end
と表示せよ。
(n として負の数または 0 を受け取ったときは、end
のみ表示する。)
非負の整数を入力してください: 9↵
987654321
87654321
7654321
654321
54321
4321
321
21
1
end
実行例 2:
非負の整数を入力してください: 12↵
210987654321
10987654321
0987654321
987654321
87654321
7654321
654321
54321
4321
321
21
1
end
実行例 3:
非負の整数を入力してください: 0↵
end
int 型の引数 \(n\) を受け取り、次のように定義される数列 \(\{a_i\}, \{b_i\}\):
\[\begin{eqnarray}
a_1 & = & 1 \\
b_1 & = & -1 \\
a_k & = & k a_{k - 1} + b_{k - 1}\ \ \ (k > 1)\\
b_k & = & - k b_{k - 1}\ \ \ (k > 1)
\end{eqnarray}\]
の \(a_1\) から \(a_n\) までを空白区切りで表示する関数 void foo(int n)
を定義せよ。\(n\) は 1 以上と仮定して良い。
main
関数は以下のコードを利用して、確認せよ。
実行例は、以下のようになる。
実行例 1:
正の整数を入力してください: 10↵
1 1 5 14 94 444 3828 25584 270576 2342880
(参考) 階乗と同程度に急速に増大するので、32 bit の整数では第 12 項程度までしか正確に求まらない。
int
型の配列 va
, vb
と、
これらの配列の共通の要素数を表す int
型の引数 n
をこの順に受け取り、
\(0 \le i < n\) の整数 i
に対して、常に va[0]
, va[1]
, …, va[i]
の和が
vb[i]
よりも小さい場合は 1、そうでない場合は 0 を返す関数
int bar(const int va[], const int vb[], int n)
を定義せよ。
main
関数は以下のコードを利用して、確認せよ。
この場合、プログラムは、
a と b については成り立つ。 a と c については成り立たない。
と出力する。(a
, b
, c
をいろいろ変えて試してみよ。 )