更新日 |
|
2011-10-06 |
-
[pp1-1.c](必須)
プログラムのコンパイル・修正・実行:
次の内容をもつソースファイルを作成し,コンパイルしなさい。
#include <stdio.h>
int main()
{
printf("Hello world!\n")
return 0;
}
コンパイル時に
エラーメッセージ
が出ることを確認したら,
printf で始まる行の行末に
; (セミコロン)を加えてから再度コンパイルし,
プログラムを実行しなさい。画面に Hello world! と表示されるはずです。
- [pp1-2.c](必須)
プログラム実行時のエラー:
次の内容をもつソースファイルを作成しなさい。
#include <stdio.h>
int main()
{
int i = 2;
printf("6 / %d = %d\n", i, 6 / i);
return 0;
}
その後,下記の指示に従いなさい。
- ソースファイルをコンパイルし,
エラーメッセージが表示されないことを確認してから,
このプログラムを実行しなさい。6 / 2
の計算結果が表示されます。
- ソースファイル中で 2 と記述されている箇所を 0 に変更し,
同じファイル名で上書き保存しなさい。
このソースファイルをコンパイル・実行し,
実行時にエラーメッセージが出ることを確認しなさい。
コンパイルに成功しても,作成したプログラムが正しいとは限りません。
プログラムの実行時にエラーが起きた場合にも,
ソースファイルを修正してコンパイルし直す必要があります。
- ソースファイル中の 0 を 3 に変更してからコンパイルし,
正しく実行できることを確認しなさい。
- [ppa1-1.c]
1. のソースコードを参考にして,
画面に自分の学生番号と氏名(ローマ字でよい)を出力するプログラムを作成しなさい。
|
2011-10-20 |
- [pe3-1.c](必須)
次のプログラムをコンパイルして実行しなさい。
次に,ソースコードの不適切な箇所を修正して実行結果を確認しなさい。
/* A first program in C */
#include <stdio.h>
int main()
{
printf("Hello world!");
return 0;
}
- [pe3-2.c](必須)
画面に
Welcome
to
C!
と表示するプログラムを,printf を一つだけを使って作りなさい。
次の点に注意すること。
- ソースファイルの 1 行目には,コメントとして氏名を記入することとする。
- ソースファイルを作ったら,コンパイルしてプログラムを実行し,
その結果が正しいことを必ず確認すること。
- [pe3-3.c](必須)
次の 3 つの値を計算して,表示するプログラムを作りなさい。
- 7 と 5 の積
- 7 を 5 で割った商
- 7 を 5 で割った余り
なお,これらの計算と表示は,一つのプログラムの中で全て行うようにすること。
"Welcome to
C!"
と表示するプログラムを,次の各方法で作りなさい。
なお,表示の2 行目(C! の行) の行頭を字下げするために,タブ文字 \t を使うこと。
タブによる字下げの量は,端末の設定によって変わるため,上と同じ字下げ量にならなくともよい。
1 行目は字下げしない。
- [pea3-1.c]
二つの printf を使って各行を表示する。
- [pea3-2.c]
一つの printf のみですべてを表示する。
|
2011-10-21 |
例題と第3回課題のプログラムは,第4回の授業までに作成しておいてください。 |
2011-10-27 |
- [pp4-1.c](必須)
リスト 1.6
のプログラムを,
変数 integer1 と integer2 に格納される 2 整数の積 (product)・
商 (quotient)・余り (modulus) を求めて表示するように書き換え,
20 と 10 を入力したときの計算結果を確認しなさい。
また,他の整数を入力したときの実行結果も観察しなさい。
- [pp4-2.c](必須)
キーボードから入力する 3 つの整数の平均値を求めて表示するプログラムを作成しなさい。
平均値は整数で求まればよい。
必ず次の形式で表示するプログラムにすること
(10,20,30 を入力した場合の例)。
Average of 10, 20 and 30 is 20
|
2011-11-04 |
- [pp5-1.c](必須)
キーボードから2つの整数を入力し,大きい方の整数のあとに「is larger」という文字列をつけて表示するプログラムを書きなさい。
2 つの整数が等しいときは,「These numbers are equal」というメッセージを表示する。
例えば,入力が 5 と 10 のときには「10 is larger」と表示し,
入力が 5 と 5 のときは「These numbers are equal」と表示する。
注意:この問題における二つの整数の関係は
- 1番目の値が2番目の値より大きい場合
- 1番目の値が2番目の値より小さい場合
- 二つの値が等しい場合
の3通りであり,すべての場合についての処理をプログラムに記述する必要がある。
- [pp5-2.txt]
(必須)
以下の C の文における誤りを指摘しなさい。
ただし,各文における変数は予め宣言されているとする。
また,各文の誤りは一つとは限らない。
なお,この課題の解答は Windows 上のエディタ (メモ帳や terapad 等) で作成して firefox で提出してよい。
*/ Addition program /*
printf("The product of %d and %d is %d"\n, x, y);
scanf("d", value);
firstNumber + secondNumber = sumOfNumbers
if (x = y);
printf(%d is equal to %d\n", x, y);
print("The sum is %d\n," x + y);
- [ppa5-1.c]
整数を入力して,それが奇数であるか偶数であるかを判定し,その結果を表示するプログラムを書きなさい。
奇数・偶数の判定結果は,入力した整数のあとに「is odd」(奇数の場合)または「is even」(偶数の場合)をつけて表示することとする。
ヒント:剰余演算子を使う。偶数は 2 の倍数であり,2 の倍数を 2 で割った余りは 0 である。
|
2011-11-11 |
- [pp6-1.c](必須)
成績が 60 点以上なら Passed と表示し,
それ以外なら Failed と表示するプログラムを作成しなさい。
成績(整数)はキーボードから入力することとする。
if/else 選択構造を用いること。
- [pp6-2.c](必須)
キーボードから入力した整数が 10 以上ならば A,
8 か 9 ならば B,
6 か 7 ならば C,
5 ならば D と表示し,
これ以外のときには二つの printf 文を使って
Failed.
You must take this course again.
と表示するプログラムを作成しなさい。
- [ppa6-1.c]
キーボードから入力する 3 つの整数から,最小値を求めて表示するプログラムを作りなさい。
ヒント:
最小値を求めるために使う変数名を仮に min とする。
以下を順に行えば,最終的に min に最小値が入る。
- 1 番目と 2 番目に入力した数を比較して,小さい方を min に代入する。
(この問題では if/else 構文を用いなさい)
- min と 3 番目の数を比較して,3 番目の方が小さければ,3 番目の数を min に代入する。(さもなくば,何もしなくていい)
|
2011-11-18 |
- [pp7-1.c] (必須)
次のプログラムの実行結果を確認しなさい。これを if/else を用いたプログラムに書き換えなさい。
/* switch/case 文の簡単な例 */
#include <stdio.h>
main()
{
int i;
printf("Input integer.\n");
scanf("%d", &i);
switch (i) {
case 1:
printf("i: 1\n");
break;
case 2:
printf("i: 2\n");
break;
default:
printf("i: other than 1 or 2\n");
break;
}
return 0;
}
- [pp7-2.c] (必須)
p. 16 リスト 3.1 を,switch を使う代わりに,入れ子になった if/else を使うように書き換えなさい。
論理演算子を使うこと。
- [ppa7-1.c]
p. 16 リスト 3.1 を,switch を使わずに実現しなさい。
ただし,論理演算子を用いないこと。
|
2011-11-25 |
- [pp8-1.c](必須)
資料
の「1000 を越える最初の 2 の累乗を求めるコード」を基にして,次のことを行いなさい。
- 1000 を越える最初の 2 の累乗を表示するプログラムを作り,
動作を確認しなさい。
- そのプログラムを,2 以上 1024 (1000 を越える最初の 2 の累
乗) 以下の整数の中から,2 の累乗にあたる数を全て表示するよ
うに変更しなさい。
ヒント:変数 product に値を代入する度に product の内容を表
示する。
- [pp8-2.c] (必須)
次のプログラムを参考にして,
10 個の整数を一つずつキーボードから入力して,
その中の最大値を求めて表示するプログラムを作りなさい。
カウンタ制御による反復処理を行うプログラムにすること。
main の中にコメントは不要。
/* 3 つの整数を入力し最大値を求める (順次構造版) */
#include <stdio.h>
main()
{
int number; /* 入力値格納用 */
int largest; /* それまでに見つかった最大値 */
/* 最初の数の処理 */
printf("Type integer : ");
scanf("%d", &number);
largest = number;
/* 2 から 3 番目の数の処理 (同じ処理の繰り返し) */
printf("Type integer : ");
scanf("%d", &number);
if (number > largest)
largest = number;
printf("Type integer : ");
scanf("%d", &number);
if (number > largest)
largest = number;
/* 結果の出力 */
printf("Largest integer: %d\n", largest);
return 0;
}
- [ppa8-1.c]
1 から 10 までの整数の和を計算して表示するプログラムを作りなさい。
while 反復構造を用いること。
なお,このプログラムの実行時には,キーボードからの整数入力は行わない。
|
2011-12-08 |
- [pp9-1.c](必須)
pp8-2.c と同じ動作をするプログラムを, for 反復構造を使って実現しなさい。
- [pp9-2.c](必須)
次の表を出力するプログラムを, for 反復を用いて実現しなさい。
N 10*N 100*N 1000*N
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000
6 60 600 6000
7 70 700 7000
8 80 800 8000
9 90 900 9000
10 100 1000 10000
この課題は,次の手順でプログラムを作成できる。
このように段階的にプログラムを作成していけば,誤りがあった場合に,誤り箇所の発見が容易になる。
- 使用する変数を仮に i とする (変数名は小文字で始めるのが慣例)。i に 1 を代入してから,i とその 10 倍,100 倍,1000 倍の数値を,タブ区切りで一行に出力するだけのプログラムを作る。正しく動作することを確かめる。
- 次に for 反復構造を導入して,i の値を 1 から 10 まで 1 ずつ増やしていきながら,各行を出力するように変える。
字下げを正しく行ってプログラムを書くこと。 N や 10*N 等を出力の一行目に表示させるのを忘れないこと。
- [ppa9-1.c]
一度に100個のアスタリスク(*)を表示するプログラムを書きなさい。
ただし,一行に表示するアスタリスクは 10 個とする(アスタリスクを10個プリントする度に改行する)。
|
2011-12-15 |
- [pp10-1.c](必須)
キーボードから正方形の一辺の長さを入力すれば,その大きさの正方形をアスタリスクで表示する C プログラムを書きなさい。
プログラムは,反復構造の中に反復構造を入れ子(ネスト)にして作成しなさい。
例:5 を入力した場合
*****
*****
*****
*****
*****
- [pp10-2.c](必須)
キーボードから入力する0以上の実数の 5 乗を求めるプログラムを反復構造を用いて作りなさい。
負の入力に対しては,再度入力を求めるようにすること。
- [ppa10-1.c]
n の階乗 n! を求めるプログラムを反復構造を用いて作りなさい。
n は非負の整数であり,プログラム実行時にキーボードから入力することとする。
階乗 n! の定義は,1 より大きな n に対して n! = n * (n-1) * (n-2) * ... * 2 * 1 であり,1! = 0! = 1 である。
負の整数が入力された場合のエラー処理を行うこと。
|
2011-12-20 |
- [pp11-1.c] (必須)
リスト 5.1 を実行しなさい。
このプログラムを char 型, int 型, float 型のサイズを求めるプログラムにして,実習で使っているコンピュータでは int 型と float 型が何バイトかを確認しなさい。
- [pp11-2.c] (必須)
リスト 5.2 を実行しなさい。
これを,キーボードから入力した文字,および,その文字のコードを 10 進数で表示するプログラムにしなさい。
改行が入力されるまで入力と表示を繰り返すプログラムにすること。
- [ppa11-1.c]
キーボードから入力した文字のうち,a の個数だけを数えるプログラムを作りなさい。
EOF が入力されるまで繰り返し文字入力ができるプログラムとすること。
|
2012-01-12 |
|
2012-01-27 |
- [pp13-1.c] (必須)
下記の示すとおりの整数とその平方根の一覧を表示するプログラムを作りなさい。
表示位置や表示桁数に気を付けること。for ループを使うこと。
0 0.0000
2 1.4142
4 2.0000
6 2.4495
8 2.8284
10 3.1623
12 3.4641
14 3.7417
16 4.0000
18 4.2426
- [pp13-2.c] (必須)
次に示す x と sin x の一覧を表示するプログラムを作りなさい。
数学ライブラリ関数 sin を使うこと。
また,表示位置や表示桁数に気を付けること。
なお,x の単位はラジアンである。
x sin x
0.00 0.000
0.50 0.479
1.00 0.841
1.50 0.997
2.00 0.909
2.50 0.598
3.00 0.141
3.50 -0.351
4.00 -0.757
4.50 -0.978
5.00 -0.959
5.50 -0.706
6.00 -0.279
6.50 0.215
ループによる浮動小数点数の誤差の蓄積を無くすため,
ループ制御変数は整数型とする。
そのため,プログラムの主要部分は次のとおりとなる。
下線部には適当なコードを書くこと。
for (i = 0; i < 14; i++) {
x = i * 0.5;
printf(_________________________);
}
- [ppa13-1.c]
直角三角形の直角を挟む 2 辺の長さから,斜辺の長さを求めて表示するプログラムを作りなさい。
2 辺の長さはキーボードから与えることとし,実数値を与えられるようにすること。
|
2012-01-26 |
- [pp14-1.c](必須)
次の指示に従ってプログラムを作りなさい。
- int 型の整数の絶対値を求めて int 型の戻り値として返す関数 iabs を作りなさい。
iabs の本体では,パラメータ(引数)を通じて渡される整数が 0 以上かどうかに応じて,0 以上の場合には戻り値としてそのままの値を返し,そうでない場合には正負の符号を反転させた値を返せばよい。
- 関数 iabs を呼び出すコードを関数 main に書いて,ソースコード全体でプログラムとして動作するようにしなさい。
main では,キーボードから整数を読み込み,それを関数 iabs に渡して iabs からの戻り値を結果を表示するようにすること。
なお,関数 iabs には変更を加えないこと。
- [pp14-2.c](必須)
リスト 6.4 のプログラムを次のように変更しなさい。
- 関数 maximum を,3 つの double 型の数値を受け取り,その最小値を double 型として返す関数 minimum に変更する。関数のプロトタイプ宣言にも変更が必要。
- 関数 main を,キーボードから打ち込んだ 3 つの実数を double 型変数に格納し,その最小値を表示するようにする。
予期せぬ実行結果が得られるならば,プログラムの適当な箇所に,変数の内容を表示するデバッグ用の printf 文を挿入してみるとよい。
プログラムの誤りがわかったら,デバッグ用の printf 文は削除すること。
|