章末問題
ぐるぐまわーる
以下の問題を用意しておきました。解いてプログラミングになれましょ。
例題 1
1 つの整数の入力を受け取れ。
そして、1 からその数までを、一つづつ増やしながら出力せよ。
入力が 1 より小さいときは何も出力しないこと。
このように動作せよ。
入力1:
8
出力1:
12345678
入力2:
-1
出力2:
解き方
方針を考えてみよっか。
- 入力を受け取る変数を 1 つ用意する。
- 入力を変数に受け取る。
- 制御変数を用意し、1 で初期化する。
- 制御変数が入力以下であればループする。
- 制御変数の数値を出力する。
- 制御変数を 1 増やす。
実装してみよう。
#include <iostream>
int main() {
int input;
std::cin >> input;
int count = 1;
while (count <= input) {
std::cout << count;
++count;
}
}
ちなみに、for
で書くとこうなる。こちらが書けるようになろう。
#include <iostream>
int main() {
int input;
std::cin >> input;
for (int count = 1; count <= input; ++count) {
std::cout << count;
}
}
問 1
階乗 というのは、1 からその数までをすべて掛けた数 のこと。
例えば、3 の階乗 は 1 × 2 × 3 = 6 になる。
1 つの自然数の入力を受け取れ。そして、その階乗を出力せよ。
このように動作せよ。
入力:
8
出力:
40320
※入力に 17 以上の値を入れると結果がおかしくなると思うけど、その対処法は別の回でやるよ。
問 2
まず、英語圏には "Fizz Buzz" という数を数える言葉遊びがありまして、
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz ...
みたいになる。3 の倍数は "Fizz"、5 の倍数は "Buzz"、15 の倍数は "FizzBuzz"、それ以外はそのまま答える遊び。
今回はこれをプログラムで再現してみる。機械は失敗しないので。
1 つの整数の入力を受け取れ。
そして、その数まで "Fizz Buzz" を行え。
このように動作せよ。
入力:
11
出力:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11