C入門3 課題
1. Cの授業をすると、決まって、「次のようなプログラムを書いたけど様子がおかしい」という質問を受けます。
教員はなんと答えるとよいでしょう。
#include <stdio.h>
int main(void)
{
int x = 10;
printf("変数の中身は%dです。\n", x);
return 0;
}
A printfのあたりをよく見てみましょう。
B %dが全角ですぜ。(こういうのは半角で書こうね。)
C よくあることだよ。
D その他(どうせなら、おもしろい解答募集)
2. Cの授業をすると、決まって、「次のようなプログラムを書いたけど様子がおかしい」という質問を受けます。
教員はなんと答えるとよいでしょう。(ちなみに、これは危険なプログラムです。)
#include <stdio.h>
int main(void)
{
int x;
printf("整数を入力してください:");
scanf("%d", x);
printf("入力した整数は%dですね。", x);
return 0;
}
A scanfのあたりをよく見てみましょう。
B &が抜けてやすぜ。
C これもよくあることなんだ。
D その他
3. Cの授業をすると、決まって、「コンパイルしたら、エラーメッセージが20個もでました」
「もういやです」という質問(?)を受けます。
教員はなんと答えるとよいでしょう。
A エラーを出さないプログラマなんかいないよ。
B 一箇所のミスが複数のエラーに数えられてるだけで、そんなにエラーはないと思うよ。
まず、一番上のエラーメッセージを見て、そこら辺を直してみましょう。
C 私はいつも「エラーが200個を超えたのでこれ以上コンパイルできません」というメッセージを出してるよ。
そういうの見たことある?
D コンパイルエラーってかわいいじゃん。(実行時エラーは怖い。)
4. 次のプログラムをコンパイルするとエラーになります。どうしてでしょうか。
答がわかっても、一度、コンパイルしてエラーを見ておいてください。
#include <stdio.h>
int main(void)
{
printf("整数を入力してください:");
int x;
scanf("%d", &x);
printf("あなたが入力した値は%dですな。\n", x);
return 0;
}
5. 次のプログラムは、コンパイル・実行できるでしょうか?
実行できた場合、どのようになるでしょうか?
まず、考えてから、試してください。
このようなコメントをどう思いますか?
/***********************************
プログラム名 :sum.c
用途 :足し算
Copyright (c):Ken Kobayashi
************************************/
#include <stdio.h>
int main(void)
{
int a, b;
printf("整数を入力してください:");
scanf("%d", &a);
printf("整数を入力してください:");
scanf("%d", &b);
printf("和:%d", a + b);
return 0;
}
6. 「コメントのないプログラムはバグだ」という人がいます。
一方で、「コメントはなるべくいれない方がよい」という人もいます。
以下の例を参考に(しなくてもいいです)、両者の主張の理由を推測し、自分の考えを述べてください。
/***********************************
プログラム名 :sub.c
用途 :引き算
Copyright (c):Ken Kobayashi
************************************/
#include <stdio.h>
int main(void)
{
/* int型変数aとbを用意する */
int a, b;
/* 整数入力をうながす */
printf("整数を入力してください:");
/* ユーザの入力を変数aに受け取る */
scanf("%d", &a);
/* 整数入力をうながす */
printf("整数を入力してください:");
/* ユーザの入力を変数bに受け取る */
scanf("%d", &b);
/* 和を出力する */
printf("差:%d", a - b);
return 0;
}
7. ユーザに現在の年齢を入力してもらい、
現在の年齢 :(現在の年齢)
5年後の年齢 :(5年後の年齢)
10年後の年齢:(10年後の年齢)
のように出力するプログラムを書いてください。ただし、「(現在の年齢)」などには、実際の数値が入るとします。
8. 本文解説(C入門3)で見たように、足し算は「+」で表わされます。引き算は「-」、掛け算は「*」、割り算は「/」です。
つまり、aとbを数値型の変数(数値をいれる変数)としたときに
a + b :aとbを足したもの
a - b :aからb引いたもの
a * b :aとbを掛けたもの
a / b :aをbで割ったもの
という意味になります。(ただし、整数の場合、割り算の答は、小数点以下切り捨てになります。)
これから、問5のプログラムを改造して、ユーザが入力した2つの整数の和差積商を計算して表示するものにしてください。実行結果は、次のようになるようにします。
和:(足し算の答)
差:(引き算の答)
積:(掛け算の答)
商:(割り算の答)
ただし、「(足し算の答)」などには、実際に計算した答の数値が入るものとします。
(おまけ) 問8のような課題を出す意図はなんだと思いますか?