Ex03
From Prog0
演習第3回
Contents |
演習問題
主な内容
- その他の整数型
- 浮動小数点型
- 型変換(キャスト)
- printf/scanfの書式
今回より、一人ひとりの授業理解度を確認することを目的として、口頭試問形式による採点を行います。 採点対象の問題が解けたら手を挙げ、教員またはTA/SAを呼んでください。口頭で解答の内容を説明してもらいます。正しく説明できた場合は点数を付け、説明が不十分な場合はやり直してもらいます(間違えても減点はしません)。今回の口頭採点の対象は A-2 の1問のみです。その他の問題については、これまでと同様にmenuコマンドを使ってファイルを提出してください。なお、採点の都合上、口頭採点の対象となる問題のファイルもmenuコマンドで提出してください。
出席確認
演習時間中に出席確認をLMS上の「演習出欠」で行ってください。出席確認用のパスワードは演習時間のどこかのタイミングで提示されます。
A問題
A-1 変数の値
ファイル名: ex03a1.txt, ex03a1.c
以下は、プログラムの一部を抜き出したものである。
int i, j; double x, y; x = 1.1; y = 2.5; i = x; j = y;
- まず、変数 i および j の最終的な値を予想し、その結果を ex03a1.txt に記述しなさい。予想が間違っていても、採点には影響しない。
- 次に、#include や printf など必要な命令を補って、変数 i と j の最終的な値を表示するプログラムを ex03a1.c として作成しなさい。プログラムをコンパイル・実行したうえで、実行結果をもとに i と j の値がそのようになった理由を ex03a1.txt に追記しなさい。
A-2 (口頭試問) printfの書式
ファイル名: ex03a2.c
以下は、整数値の単位数と実数値の点数を、さまざまな書式で出力するプログラムである。実行例と同じ出力が得られるように、printfの下線部に適切な書式指定子を記入し、プログラムを完成させなさい。ただし、%g および %G は使用しないこと。なお、この問題では桁数も実行結果に合わせること。
#include <stdio.h> int main() { int i = 12; double x = 34.5; printf("単位数は%__です\n", i); printf("単位数は%__です\n", i); printf("単位数は%__です\n", i); printf("単位数は%__です\n", i); printf("点数は%__点です\n", x); printf("点数は%__点です\n", x); printf("点数は%__点です\n", x); printf("点数は%__点です\n", x); return 0; }
[実行例]
% ./a.out
単位数は 12です
単位数は0012です
単位数は12 です
単位数は +12です
点数は34.50点です
点数は 34.50点です
点数は3.450E+01点です
点数は3.450000e+01点です
%
A-3 平均点
ファイル名: ex03a3.txt
以下に示すのは、5人分の点数の平均を出力するプログラムである。しかし、本来「6.4」と出力されるべきところが、このプログラムでは「6.0」と表示されてしまう。この原因となっているプログラム上の問題点と、正しい計算結果を得るための修正方法について、ex03a3.txt に記述しなさい。
(ヒント:ハンドアウト Lec 03-10、Lec 03-11 を参照)
#include <stdio.h> int main() { double x; x = (5 + 7 + 3 + 8 + 9)/5; printf("%.1f\n", x); return 0; }
B問題
B-1 キャスト
ファイル名: ex03b1.c
以下の実行例のように、入力された正の実数の小数点以下第3位を切り捨てて表示するプログラムを作成しなさい。ただし、切り捨ての処理はキャストを用いて1行で記述すること。
[実行例]
% ./a.out
正の実数を1つ入力してください:1.2367
1.230000
%
B-2 三角形の面積
ファイル名: ex03b2.c
以下の実行例のように、三角形の底辺の長さと高さをキーボードから読み込み、 三角形の面積を計算するプログラムを作成しなさい。ただし、scanfは1回のみ使用すること。
[実行例]
% ./a.out
三角形の底辺の長さと高さをcmで入力してください:7.5 3.0
三角形の面積は 11.250000 平方cmです
%
B-3 消費税とポイント
ファイル名: ex03b3.c
ある店では、商品価格を税抜きで表示しており、買い物の際には税抜き合計額に10%の消費税を加えた金額を支払う必要がある。ただし、税抜き合計額に対して1.5%分のポイントがポイントカードに付与される。この店での買い物の税抜き合計額を入力すると、消費税額・支払額・付与されるポイントを表示するプログラムを作成しなさい。なお、消費税額およびポイントの計算において、1円未満の端数は切り捨てとすること。
[実行例]
% ./a.out
商品代金(税抜き)を入力してください:1234
消費税は 123 円、お支払い額は 1357 円です。
18 ポイントがつきました!
%
Extra問題
E-1 平均値と偏差
ファイル名: ex03e1.c
5人分の体重を入力すると、平均値および偏差(各個人の体重と平均値との差)を計算し、入力された体重とあわせて表示するプログラムを作成しなさい。その際、表示の桁数がそろうようにprintfの書式を工夫すること。整数部は最大3桁まで表示できるようにし、小数点以下は1桁まで表示するものとする。
[実行例]
% ./a.out
5人分の体重を空白で分けて入力してください
71.1 68.93 86 77.5 100.9
5人の体重の平均値: 80.9 [kg]
1人目の体重: 71.1 [kg]、平均からの偏差: -9.8 [kg]
2人目の体重: 68.9 [kg]、平均からの偏差: -12.0 [kg]
3人目の体重: 86.0 [kg]、平均からの偏差: +5.1 [kg]
4人目の体重: 77.5 [kg]、平均からの偏差: -3.4 [kg]
5人目の体重: 100.9 [kg]、平均からの偏差: +20.0 [kg]
%
E-2 16進数
ファイル名: ex03e2.c
以下の実行例のように、入力した整数を16進数で表示するプログラムを作成しなさい。
[実行例]
% ./a.out
10進数を1つ入力してください:255
255 は16進数で ff です
%
課題提出上の注意事項
解答ファイルはmenuコマンドを使って提出してください。以下のようにmenuコマンドを実行し、表示されるメッセージに沿って操作すること。
%
~prog0/bin/menu
menuコマンドは、解答ファイルが ~/Prog0/Ex## のディレクトリに指定されたファイル名で置かれているものとして処理します。正常に提出された場合は ○ が、何らかのエラーが生じた場合は × が表示されます。
解答の提出期間は以下のとおりです。
問題 | 提出受付開始 | 提出〆切 |
---|---|---|
A問題 | 演習日の6日前の午後9時 | 演習終了時刻 |
B, Extra問題 | 演習日の6日前の午後9時 | 演習日の6日後の午後9時 |
提出は〆切前であれば何度でもやり直すことができます。再提出すると、前に提出したファイルは新しい内容で上書きされます。