[一覧に戻る]
例えば,次のような問題を考える.
問題
関数 void swap(int *ap, int *bp) を使って,int型へのポインタ変数 ap, bpが指すint型の数値*ap, *bpを交換し,ポインタ変数 ap が指す数値を *bp,ポインタ変数 bp が指す数値を *ap としたい.
そのような関数 void swap(int *ap, int *bp) を作成せよ.それを用いて,与えられた2つの整数を,与えられた順とは逆順に出力するプログラムを作成せよ.入力仕様
- 2つの整数aとbが標準入力から与えられる.
- -10000 ≦ a ≦ 10000.
- -10000 ≦ b ≦ 10000.
出力仕様
- b, aをこの順に出力する.
- 出力は標準出力に行う.
- 出力の後に改行する.
例
入力 => 出力 3 2 => 2 3 -10 10 => 10 -10 987 654 => 654 987
このプログラムの動きを理解することは重要であるので,分からない場合は考えるか,質問をすること.#include <stdio.h> void swap(int *ap, int *bp) { int t; t = *ap; *ap = *bp; *bp = t; return; } int main(void) { int a, b; scanf("%d %d", &a, &b); swap(&a, &b); printf("%d %d\n", a, b); return 0; }
「例」に書かれているものだけではなく,自分で考えた例についても実行して,正しく動いていそうか確認するとよい.% gcc g0.c % ./a.out 3 2 ← 自分で入力する 2 3 ← プログラムの出力が返ってくる % ./a.out -10 10 ← 自分で入力する 10 -10 ← プログラムの出力が返ってくる %
例えば,g0.cというファイルを作成したならば,次のコマンドを実行する.提出法
CED (CentOS) にて,プログラムを作成したディレクトリで以下を実行せよ.% ~oa000833/enshu1p/checker_g0.rb ソースファイル名
ここで「%」はコマンドプロンプトを意味するので,入力してはならない.% ~oa000833/enshu1p/checker_g0.rb g0.c
「Submission successfully completed.」と表示されれば,提出が完了したことになる. それ以外の表示がされている場合は,プログラムにおかしなところ (バグ) があるか,入力したコマンドが間違っている.確認して,提出完了となるまで試してみよ.分からない場合は,教員かTAに質問をせよ.
なお,checkerは入力と出力の関係が正しいかどうかだけを確認していて,プログラムが問題文通りに作られているかどうかまで確認していない.例えば,この課題の場合,swapという関数を作成しなくても,Submission successfully completedとなる場合がある.注意すること.
[一覧に戻る]