Ex02Ans
From Prog0
演習第2回
Contents |
解答例
A問題
A-1 変数名の規則
ファイル名: ex02a1.txt
(x)int 666pokemon; // 変数名は数字で始めてはいけない (o)int _666pokemon; (x)int class.1; // 「.」 は使用できない (o)int num1, num2; (x)int good-day; // 変数名が「-」を含んでいる (o)int __init__; (x)int for = 0; // 「for」は予約語のため (o)int a1,a2=0; (o)int speed2fast; (x)int prog@uoa; // 変数名が「@」を含んでいる
A-2 printf
ファイル名: ex02a2.c
#include <stdio.h> int main() { int num; printf("整数値を入力してください:"); scanf("%d", &num); printf("入力された値は %d で、これを5倍した結果は %d です。\n", num, num*5); return 0; }
A-3 演算と演算子
ファイル名: ex02a3.txt
(o)result = (i + j) * k; // 正しい式。計算結果:(1 + 2) * 3 = 9 (o)result = i + (j * k) / (k - 1); // 正しい式。計算結果:1 + (2 * 3) / 2 = 1 + 6 / 2 = 1 + 3 = 4 (x)result = (i + (j - k); // 括弧が閉じていない (x)i + j + k = result; // 左辺は値であり、変数ではない (x)result = 3k; // 3k は文法的に不正 、乗算の "*" が必要 (o)result = (k / (j * 2)); // 正しい式。計算結果:3 / (2 * 2) = 3 / 4 = 0(整数除算) (x)result = j+*k; // 「+*」 という演算子はない (o)result = result + i*j; // 正しい式。計算結果:0 + 1 * 2 = 2
B問題
B-1 平成/西暦変換
ファイル名: ex02b1.c
#include <stdio.h> int main() { int heisei; printf("年を平成で入力してください [1-31]: "); scanf("%d", &heisei); printf("平成 %d 年は西暦 %d 年です。\n", heisei, heisei+1988); printf("平成 %d 年に生まれた人は今年 %d 才です。\n", heisei, 2025-(heisei+1988)); return 0; }
B-2 台形面積の計算
ファイル名: ex02b2.c
#include <stdio.h> int main() { int top, bottom, height; int area; printf("上底の長さを整数値で入力しなさい:"); scanf("%d", &top); printf("下底の長さを整数値で入力しなさい:"); scanf("%d", &bottom); printf("高さを整数値で入力しなさい:"); scanf("%d", &height); area = (top + bottom) *height / 2; printf("面積:%d\n", area); return 0; }
B-3 プログラムのデバッグ(上級編)
ファイル名: ex02b3.c
#include <stdio.h> int main() { int a, b, c, res; printf("Input a, b, and c: "); scanf("%d%d%d", &a, &b, &c); printf("\n"); res = a*b; printf("Compute a * b\n"); printf("%d * %d = %d\n", a, b, res); /* cを削除、resを追加*/ printf("\n"); printf("Compute (2 * a + b) %% c\n"); /* printfで%を表示させたい場合は%%と書く */ res = (2*a+b)%c; /* 計算を行う位置を変更 */ printf("(2 * %d + %d) %% %d = %d\n", a, b, c, res); /* resを追加 */ return 0; }
Extra問題
E-1 二次関数の計算
ファイル名: ex02e1.c
#include <stdio.h> int main() { int a; int x, xm1, xm2, xp1, xp2; int y, ym1, ym2, yp1, yp2; printf("Enter a -> "); scanf("%d", &a); xm2 = a - 2; xm1 = a - 1; x = a; xp1 = a + 1; xp2 = a + 2; ym2 = 3 * xm2 * xm2 - 4 * xm2 + 5; ym1 = 3 * xm1 * xm1 - 4 * xm1 + 5; y = 3 * x * x - 4 * x + 5; yp1 = 3 * xp1 * xp1 - 4 * xp1 + 5; yp2 = 3 * xp2 * xp2 - 4 * xp2 + 5; printf("x : y\n"); printf("%d : %d\n", xm2, ym2); printf("%d : %d\n", xm1, ym1); printf("%d : %d\n", x, y); printf("%d : %d\n", xp1, yp1); printf("%d : %d\n", xp2, yp2); return 0; }
コメント:変数を減らした、次のようなプログラムでももちろんよい。
#include <stdio.h> int main() { int a; int x, y; printf("Enter a -> "); scanf("%d", &a); printf("x : y\n"); x = a - 2; y = 3 * x * x - 4 * x + 5; printf("%d : %d\n", x, y); x = a - 1; y = 3 * x * x - 4 * x + 5; printf("%d : %d\n", x, y); x = a; y = 3 * x * x - 4 * x + 5; printf("%d : %d\n", x, y); x = a + 1; y = 3 * x * x - 4 * x + 5; printf("%d : %d\n", x, y); x = a + 2; y = 3 * x * x - 4 * x + 5; printf("%d : %d\n", x, y); return 0; }