Ex03Ans
From Prog0
演習第3回
Contents |
解答例
A問題
A-1 変数の値
ファイル名: ex03a1.txt
iの最終的な値は 1,jの最終的な値は 2 である。 整数型への型変換は四捨五入で切り上げられることはなく、すべて切り捨てられるため。
ファイル名: ex03a1.c
#include <stdio.h>
int main()
{
int i, j;
double x, y;
x = 1.1;
y = 2.5;
i = x;
j = y;
printf("i = %d\n", i);
printf("j = %d\n", j);
return 0;
}
A-2 printfの書式
ファイル名: ex03a2.c
#include <stdio.h>
int main()
{
int i = 12;
double x = 34.5;
printf("単位数は%4dです\n", i);
printf("単位数は%04dです\n", i);
printf("単位数は%-4dです\n", i);
printf("単位数は%+4dです\n", i);
printf("点数は%.2f点です\n", x); // %5.2fでもOK
printf("点数は%6.2f点です\n", x);
printf("点数は%.3E点です\n", x); // %9.3EでもOK
printf("点数は%e点です\n", x); // %.6e, %12.6eでもOK
return 0;
}
A-3 平均点
ファイル名: ex03a3.txt
平均点の計算において、割り算が整数同士で行われているため、小数点以下が切り捨てられてしまっている。 正しい結果を得るには、整数定数を浮動小数点定数に置き換えるか、キャストを用いて少なくとも一方を浮動小数点型に変換すればよい。 (例:/5 を /5.0 に変更する、あるいは x = (double)(5 + 7 + 3 + 8 + 9)/5 とするなど)
B問題
B-1 キャスト
ファイル名: ex03b1.c
#include <stdio.h>
int main()
{
double x;
printf("正の実数を1つ入力してください:");
scanf("%lf", &x);
x = (int)(x * 100) / 100.0; // intへのキャストで小数点以下が切り捨てられる
printf("%f\n", x);
return 0;
}
B-2 三角形の面積
ファイル名: ex03b2.c
#include <stdio.h>
int main()
{
double teihen, takasa, menseki;
printf("三角形の底辺の長さと高さをcmで入力してください:");
scanf("%lf%lf", &teihen, &takasa);
menseki = teihen * takasa / 2.0;
printf("三角形の面積は %f 平方cmです\n", menseki);
return 0;
}
B-3 消費税とポイント
ファイル名: ex03b3.c
#include <stdio.h>
int main()
{
int price, points, tax, pay;
printf("商品代金(税抜き)を入力してください:");
scanf("%d", &price);
tax = price * 0.1;
pay = price + tax;
printf("消費税は %d 円、お支払い額は %d 円です。\n", tax, pay);
points = price * 0.015;
printf("%d ポイントがつきました!\n", points);
return 0;
}
Extra問題
E-1 平均値と偏差
ファイル名: ex03e1.c
#include <stdio.h>
int main()
{
double a, b, c, d, e;
double average;
printf("5人分の体重を空白で分けて入力してください\n");
scanf("%lf%lf%lf%lf%lf", &a, &b, &c, &d, &e);
average = (a + b + c + d + e)/5;
printf("5人の体重の平均値: %5.1f [kg]\n", average);
printf("1人目の体重: %5.1f [kg]、平均からの偏差: %+5.1f [kg]\n", a, a - average);
printf("2人目の体重: %5.1f [kg]、平均からの偏差: %+5.1f [kg]\n", b, b - average);
printf("3人目の体重: %5.1f [kg]、平均からの偏差: %+5.1f [kg]\n", c, c - average);
printf("4人目の体重: %5.1f [kg]、平均からの偏差: %+5.1f [kg]\n", d, d - average);
printf("5人目の体重: %5.1f [kg]、平均からの偏差: %+5.1f [kg]\n", e, e - average);
return 0;
}
E-2 16進数
ファイル名: ex03e2.c
#include <stdio.h>
int main()
{
int n;
printf("10進数を1つ入力してください:");
scanf("%d", &n);
printf("%d は16進数で %x です\n", n, n);
return 0;
}
