引数で数値を受け取ると、対応するテキストを表示する関数を作りました。その関数を次のように呼び出してみたところ、どうやら期待どおりに動作しているように見えます。でも、できれば早いうちに直しておきたい部分があります。
![](/wp-content/include/images/avatar/teacher/5.png)
どこを直すのがいいか分かりますか?
main.c
#include <stdio.h>
#include <stdlib.h>
/* 引数が1のときは"one"、2のときは"two"と表示する */
void PrintOneOrTwo(int n) {
if (n == 1) {
/* 1のとき */
puts( "one" );
} else {
/* 2のとき */
puts( "two" );
}
}
int main(void) {
PrintOneOrTwo(1);
PrintOneOrTwo(2);
return EXIT_SUCCESS;
}
実行結果
one
two
![](/wp-content/include/images/avatar/student/3.png)
今回のプログラムは、コメントが入ってて読みやすいですね。
![](/wp-content/include/images/avatar/teacher/1.png)
そうね。最初のコメントが関数の仕様になってるのが分かるかしら?
![](/wp-content/include/images/avatar/student/7.png)
最初のコメントはこれか……
/* 引数が1のときは"one"、2のときは"two"と表示する */
void PrintOneOrTwo(int n) {
……
}
![](/wp-content/include/images/avatar/student/8.png)
引数によって表示するテキストが変わるっていう仕様ですね。
![](/wp-content/include/images/avatar/teacher/4.png)
そうそう。関数の中身はどうなってるかしら?
![](/wp-content/include/images/avatar/student/7.png)
関数の中身にもコメントが入ってる。ふむふむ……ん?
if (n == 1) {
/* 1のとき */
puts( "one" );
} else {
/* 2のとき */
puts( "two" );
}
![](/wp-content/include/images/avatar/student/12.png)
んんー。なんだろう、これ……
![](/wp-content/include/images/avatar/teacher/9.png)
ね。なんだか正しいような正しくないようなプログラムでしょ?
![](/wp-content/include/images/avatar/student/10.png)
はい。最初は読みやすいと思ったんですけど、よく見たらモヤモヤしてきました……
![](/wp-content/include/images/avatar/teacher/6.png)
そのモヤモヤの理由について考えるのが、今回の問題よ。
![](/wp-content/include/images/avatar/student/2.png)
な、なるほど。
![](/wp-content/include/images/avatar/teacher/7.png)
問題の関数に
3
を入力したらどうなるでしょうか?