課題1
今日は1円、明日は2円、明後日は4円というように翌日には2倍の金額を 貯金して合計1万円を超える日を、下記の実行結果のように 表示させたい。下記のプログラムをwhile1.cとして作成し、 正しく実行されることを確認せよ。
#include <stdio.h> int main(void){ int i, j, sum; i = 1; j = 1; sum = 0; while (sum < 10000){ sum += j; printf("%2d日目までの合計金額 %8d円\n", i, sum); i++; j *= 2; } return 0; }
% ./a.out 1日目までの合計金額 1円 2日目までの合計金額 3円 3日目までの合計金額 7円 4日目までの合計金額 15円 5日目までの合計金額 31円 6日目までの合計金額 63円 7日目までの合計金額 127円 8日目までの合計金額 255円 9日目までの合計金額 511円 10日目までの合計金額 1023円 11日目までの合計金額 2047円 12日目までの合計金額 4095円 13日目までの合計金額 8191円 14日目までの合計金額 16383円
課題2
任意の個数の数字(小数を含む)を入力し、 その合計と平均を計算させるプログラムが示されて いる。プログラムをwhile2.cとして書き、 正しく実行されることを確認せよ。入力を中止するには、Ctrl-d(Ctrlボタンを 押しながらdボタンを押す)で行うものとする。
#include <stdio.h> int main(void){ int n; double dat, sum, mean; sum=0.0; n=0; while (scanf("%lf", &dat)!=EOF){ sum += dat; n++; } printf("合計 = %9.4f\n", sum); mean = sum/n; printf("平均 = %9.4f\n", mean); return 0; }
(実行例) % ./a.out 1 2.1 3.2 0.8 5 ^d ← Ctrl-dで入力中止 合計 = 12.1000 平均 = 2.4200
課題3
下記のプログラムをwhile3.c として書き、様々な数値で試して、課題2の実行結果との違いを確認せよ。
#include <stdio.h> int main(void){ int n, sum, mean; double dat; sum=0; n=0; while (scanf("%lf", &dat)!=EOF){ sum += dat; n++; } printf("合計 = %9.4f\n", sum); mean = sum/n; printf("平均 = %4d\n", mean); return 0; }
(実行例) % ./a.out 1 2.1 3.2 0.8 5 ^d 合計 = ????????? ← わざと?マークで隠してある 平均 = ?????????
課題4
あらかじめ人数が分かっている学生集団において、英語、数学、国語の各科目ごとの 点数を入力した後に、各々の平均点を知りたい。while文を使用して、下記 の実行結果を参考にしながら、要求を満たすプログラムをwhile4.cとして作成し、正 しく実行することを確認せよ。 ただし、平均点は小数とし、3つの平均点は小数点が揃うように表示させよ。
(実行例:赤字が入力された数字) % ./a.out 学生の人数? 3 学生1の英語: 50 学生1の数学: 70 学生1の国語: 60 学生2の英語: 40 学生2の数学: 20 学生2の国語: 30 学生3の英語: 100 学生3の数学: 100 学生3の国語: 90 英語の平均点: 63.333 数学の平均点: 63.333 国語の平均点: 60.000
課題5
年齢を尋ねるプログラムを作りたい。if文を用いて、100歳以上の入力には下記のような 特別のメッセージを表示し、また負の数字に対してはエラーを表示させたい。 主旨を満足するプログラムをwhile5.cとして書き、 正しく処理、表示されることを確認せよ。
(実行結果) % ./a.out あなたの年齢を入力してください 30 あなたの年齢は30才ですね。 % % ./a.out あなたの年齢を入力してください105 あなたの年齢は105才ですね。長生きしていますね。 % % ./a.out あなたの年齢を入力してください-10 正しく入力してください %
課題6
上記のwhile5.cを元に、入力エラーに対しては、正しく入力されるまで入力を 求めるプログラムを作成したい。 while文を用いて、主旨を満足するプログラムをwhile6.cとして書き、 正しく処理、表示されることを確認せよ。
(実行結果) % ./a.out あなたの年齢を入力してくださ 30 あなたの年齢は30才ですね。 % % ./a.out あなたの年齢を入力してください 105 あなたの年齢は105才ですね。長生きしていますね。 % % ./a.out あなたの年齢を入力してください -10 正しく入力してください あなたの年齢を入力してください -3 正しく入力してください あなたの年齢を入力してください 15 あなたの年齢は15才ですね。 %