GeoCities home page

プログラミング A home page

前期演習問題の助言

演習問題を終えていない学生のために、一部の演習問題について助言を提供します。

演習34

この演習課題は、簡単にいうと、キーボードから入力した文字を表示するプログラム、つまり「ABC」と入力したら「ABC」と表示するプログラムを作りなさい、というものです。

しかし、このようなプログラムを普通に作ると、入力された文字を表示するだけの、いつまでも終わらないプログラムが出来てしまいます。そこで、「CTRL」+「Z」を押すと止まるようにします。getchar 文を使っているなら、「CTRL」+「Z」は-1という値になっています。しかし、-1では判りにくいので、プログラムでは-1のかわりに「EOF」と書きましょう。(EOF は End Of File の略です。) コンピュータは、プログラムコードの中に「EOF」という表示を見つけた場合、-1とみなしてくれます。

このプログラムをいきなり作ることは難しいので、次の3段階で作ることを薦めます。

#include <stdio.h>

int main(int argc, char **argv)

{

int x;

x = 'A';

// A」を表示するプログラムをここに書く

getchar();

return 0;

}

  1. 上のプログラムでは、変数 x に「A」という文字が入っています。まずはこの変数 x の中身「A」を表示するプログラムを書いてください。
  2. このプログラムでは、キーボードからの入力に関係なく「a」と表示してしまいます。キーボードから1文字の入力を受け付け、それを変数 x に入れるようにプログラムを変更しなさい。(1文字表示するプログラムは既に出来ているので、こうすることによって1文字のの入力を表示するプログラムになります。)
  3. while 文を使って、何文字でも入力を受け付けるように変更しましょう。

演習35

プリントに載っている例は、if 文と goto 文を用いた例です。この演習で求められているプログラムは、この例のように if 文と goto 文を用いたものではなく、for 文を用いたプログラムです。例をそのまま入力しても、この演習課題を達成したことにはなりません。

演習36

演習の内容を理解していれば、次の質問に答えら得るはずです。

演習37

演習の内容を理解していれば、次の質問に答えら得るはずです。

演習38

演習の内容を理解していれば、次の質問に答えら得るはずです。

演習39

このプログラムは、次のように動作します。

何個のデータの平均を計算しますか? 3
1つめのデータを入力してください。
1
2つめのデータを入力してください。
3
3つめのデータを入力してください。
4
平均は 2.333333 です。

double heikin(int n)」とは、次のような機能を持つ heikin という関数です。

main から例えば「4つ」という指示を受けたら、ユーザに4つの数を入力してもらい、その平均を計算して main に返す。

main 関数と heikin 関数のはたらき

もし「Call to undefined function 'heikin'.」と表示された場合、その原因は heikin という関数が存在しないことです。heikin という関数は自分で作らなくてはなりません。関数の作り方は教科書のリスト 5.2 (p.139) 辺りを参考にするとよいでしょう。

演習40

演習の内容を理解していれば、次の質問に答えら得るはずです。

演習41

演習の内容を理解していれば、次の質問に答えられるはずです。

演習42

このプログラムでは、演習39と同様に swap という関数を自分で作らなくてはなりません。

演習43

func1

func1(buff);

という形で呼び出されています。main の最初で

char buff[80];

と宣言されているように、buff[0]buff[79]char 型です。

関数 func1 はなぜ

void func1(char s)

ではなく

void func1(char *s)

と定義されているのですか。