Go 言語で「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみる-No.47「値の入れ替え」

はじめに

「基礎プログラミング演習 I 〜100 本ノック中級編」を解いてみます。

取り扱う問題は以下のサイトを引用させていただきました。

検証環境

1
2
3
4
5
6
7
8
9
$ uname -moi
x86_64 unknown GNU/Linux

$ head -n 2 /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"

$ go version | head -n 1
go version go1.16.3 linux/amd64

問題

No. 47 値の入れ替え

異なる整数値を 2 つ入力し、それぞれ別の変数に格納する。そして、それらの変数の値を入れ替えた後、それぞれの変数の値を表示するプログラムを作成せよ。単に順序を変えて表示するだけではダメ。必ず変数の値を入れ替えること。下の実行例の場合、まず変数 a に 2、b に 5 が入力された状態から、a の値が 5、b の値が 2 になるように入れ替える。

1
2
3
4
5
# 【実行例、下線部は入力例】
$ ./knock47
input a: 2
input b: 5
a = 5, b = 2

回答

knock47.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"fmt"
)

func main() {
	var a, b int

	fmt.Printf("input a: ")
	fmt.Scan(&a)

	fmt.Printf("input b: ")
	fmt.Scan(&b)

	a, b = b, a

	fmt.Printf("a = %v, b = %v\n", a, b)
}

実行

1
2
3
4
$ go run knock47.go
input a: 2
input b: 5
a = 5, b = 2

ひとこと

複数の変数に同時に代入できる言語ならではの入れ替え方法でした。