基礎プロI 100本ノック 基礎編

**以下の C による初歩の C プログラミング 100 本ノックを Julia で解いてみました。**

基礎プロI 100本ノック 基礎編
http://www.cc.kyoto-su.ac.jp/~mmina/bp1/hundredKnocksBasic.html

各プログラムにおいて、特に指定が無い限りは入力値が指定された形式であるかどうかをチェックする必要はない（例えば整数型の値を入力させるところでアルファベットを入力された場合など）。

## No. 00 ごあいさつ
実行するとHello World!と表示するプログラムを作成せよ。

```julia
println("Hello World!")
```

    Hello World!

## No. 01 足し算
12345+23456を計算して結果を表示するプログラムを作成せよ。

```julia
println(12345+23456)
```

    35801

## No. 02 余り
12345を7で割った余りを表示するプログラムを作成せよ。

```julia
println(12345 % 7)
println(%(12345, 7))
println(rem(12345, 7))
println(mod(12345, 7))
```

    4
    4
    4
    4

注
rem は % の関数形（% も関数のように書ける）
通常はオペランドはともに正整数のことが多いので %, rem(), mod() は同じ結果を返すが，負の整数や，正負の実数の場合には結果が異なるので，help を参照すること。

```julia
println((13 % 4, 13 % -4, -13 % 4, -13 % -4))
println((rem(13, 4), rem(13, -4), rem(-13, 4), rem(-13, -4)))
println((mod(13, 4), mod(13, -4), mod(-13, 4), mod(-13, -4)))
```

    (1, 1, -1, -1)
    (1, 1, -1, -1)
    (1, -3, 3, -1)

```julia
println((13.2 % 4.3, 13.2 % -4.3, -13.2 % 4.3, -13.2 % -4.3))
println((rem(13.2, 4.6), rem(13.2, -4.6), rem(-13.2, 4.6), rem(-13.2, -4.6)))
println((mod(13.2, 4.6), mod(13.2, -4.6), mod(-13.2, 4.6), mod(-13.2, -4.6)))
```

    (0.2999999999999998, 0.2999999999999998, -0.2999999999999998, -0.2999999999999998)
    (4.0, 4.0, -4.0, -4.0)
    (4.0, -0.5999999999999996, 0.5999999999999996, -4.0)

## No. 03 入力
整数値を入力させ、その入力値を表示するプログラムを作成せよ。

```julia
print("input number:")
i = parse(Int, readline())
println("your numer is $i")
```

    input number:
    stdin>  123
    your numer is 123

## No. 04 入力と計算
整数値を入力させ、その入力値を3倍した計算結果を表示するプログラムを作成せよ。

```julia
print("input number:")
i = 3parse(Int, readline())  # 3*parse(Int, readline())
println("answer = $i")
```

    input number:
    stdin>  123
    answer = 369

## No. 05 四則演算
整数値を2つ入力させ、それらの値の和、差、積、商と余りを求めるプログラムを作成せよ。なお、差と商は1つ目の値から2つ目の値を引いた、あるいは割った結果とする。余りは無い場合も0と表示するのでよい。

```julia
print("input 1st number:")
i = parse(Int, readline())
print("input 2nd number:")
j = parse(Int, readline())
(和, 差, 積, 商, 余り) = (i + j, i - j, i*j, i÷j, i%j)
println("和: $和")
println("差: $差")
println("積: $積")
println("商: $商, 余り: $余り")
```

    input 1st number:
    stdin>  123
    input 2nd number:
    stdin>  7
    和: 130
    差: 116
    積: 861
    商: 17, 余り: 4

注
整数除算は ÷ または div()

```julia
println((123 ÷ 7, 123 ÷ -7, -123 ÷ 7, -123 ÷ -7))
println((div(123, 7), div(123, -7), div(-123, 7), div(-123, -7)))
```

    (17, -17, -17, 17)
    (17, -17, -17, 17)

```julia
println((123.6 ÷ 5.3, 123.6 ÷ -5.3, -123.6 ÷ 5.3, -123.6 ÷ -5.3))
println((div(123.6, 5.3), div(123.6, -5.3), div(-123.6, 5.3), div(-123.6, -5.3)))
```

    (23.0, -23.0, -23.0, 23.0)
    (23.0, -23.0, -23.0, 23.0)

注2
商と剰余を同時に求めるには divrem() がある

```julia
divrem(123, 7)
```

    (17, 4)

## No. 06 0?
整数値を入力させ、値が0ならzeroと表示するプログラムを作成せよ。

```julia
print("input number:")
i = parse(Int, readline())
if i == 0
    println("zero")
end
```

    input number:
    stdin>  0
    zero

## No. 07 0 or not 0
整数値を入力させ、値が0ならzero、0でなければnot zeroと表示するプログラムを作成せよ。

```julia
print("input number:")
i = parse(Int, readline())
if i == 0
    println("zero")
else
    println("not zero")
end
```

    input number:
    stdin>  1
    not zero

## No. 08 正の整数?
整数値を入力させ、値が正であればpositiveと表示するプログラムを作成せよ。ただし0は正には含まない。

```julia
print("input number:")
i = parse(Int, readline())
if i > 0
    println("positive")
end
```

    input number:
    stdin>  1
    positive

## No. 09 正? 負? 0?
整数値を入力させ、値が正であればpositive、負であればnegative、0であればzeroと表示するプログラムを作成せよ。

```julia
print("input number:")
i = parse(Int, readline())
if i > 0
    println("positive")
elseif i < 0
    println("negative")
else
    println("zero")
end
```

    input number:
    stdin>  1
    positive

## No. 10 絶対値
整数値を入力させ、その値を絶対値にして表示するプログラムを作成せよ。（できれば変数の値を絶対値に変えるようにせよ）

```julia
print("input number:")
i = parse(Int, readline())
i = abs(i)
println("absolute value is $i")
```

    input number:
    stdin>  -2
    absolute value is 2

## No. 11 ごあいさつ10回
Hello World!を10回繰り返して表示するプログラムを作成せよ。

```julia
for i in 1:10
    println("Hello World!")
end
```

    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!

## No. 12 ごあいさつ指定回
整数値を入力させ、その値の回数だけHello World!を繰り返して表示するプログラムを作成せよ。

```julia
print("input number:")
n = parse(Int, readline())
for i in 1:n
    println("Hello World!")
end
```

    input number:
    stdin>  5
    Hello World!
    Hello World!
    Hello World!
    Hello World!
    Hello World!

## No. 13 カウントアップ
整数値を入力させ、0から入力値まで数を1ずつ増やして表示するプログラムを作成せよ。

```julia
print("input number:")
n = parse(Int, readline())
for i in 0:n
    println(i)
end
```

    input number:
    stdin>  3
    0
    1
    2
    3

## No. 14 カウントダウン
整数値を入力させ、入力値から0まで数を1ずつ減らして表示するプログラムを作成せよ。

```julia
print("input number:")
n = parse(Int, readline())
for i in n:-1:0
    println(i)
end
```

    input number:
    stdin>  5
    5
    4
    3
    2
    1
    0

## No. 15 2ずつカウントアップ
整数値を入力させ、0から入力値を超えない値まで2ずつ増やして表示するプログラムを作成せよ。

```julia
print("input number:")
n = parse(Int, readline())
for i in 0:2:n
    println(i)
end
```

    input number:
    stdin>  7
    0
    2
    4
    6

## No. 16 0でおしまい
整数値を入力させ、入力値が0でなければ再度入力させ、0であれば終了するプログラムを作成せよ。

```julia
while true
    print("input number:")
    n = parse(Int, readline())
    n == 0 && break
end
```

    input number:
    stdin>  9
    input number:
    stdin>  0

## No. 17 配列を初期化
要素数10の整数型の配列を宣言し、i番目の要素の初期値をiとし、順に値を表示するプログラムを作成せよ。

```julia
m = [i for i in 0:9]
for i in m
    println(i)
end
```

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

問題文に忠実に従うならば

```julia
m = zeros(Int, 10)
for i in 1:10
    m[i] = i - 1
end
for i in 1:10
    println(m[i])
end
```

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

## No. 18 配列を入力値で初期化
要素数10の整数型の配列を宣言し、整数値を入力させ、すべての配列の要素を入力値として、すべての要素の値を表示するプログラムを作成せよ。

```julia
print("input number:")
n = parse(Int, readline())
m = fill(n, 10)
for i in m
    println(i)
end 
```

    input number:
    stdin>  6
    6
    6
    6
    6
    6
    6
    6
    6
    6
    6

## No. 19 配列に入力値を格納
要素数5の整数型の配列を宣言し、すべての配列に対して順に入力された整数値を代入し、すべての要素の値を表示するプログラムを作成せよ。

```julia
m = zeros(Int, 5)
for i in 1:5
    print("input number:")
    k = parse(Int, readline())
    m[i] = k
end
println(m)
```

    input number:
    stdin>  4
    input number:
    stdin>  6
    input number:
    stdin>  7
    input number:
    stdin>  3
    input number:
    stdin>  1
    [4, 6, 7, 3, 1]