プログラミング実習II (2026) 課題
以下のプログラムを作成せよ.
for 文について理解せよ.t (ただし 1≦t) を受け取り,1 から t までの整数の 2 乗の和(12+22+…+t2)を求めて表示するプログラムを作成せよ.数列の和の公式を使わないこと.t までの 2 乗和は t(t+1)(2t+1)/6 である.この式を計算して表示し,上の結果と一致することを確認せよ.
表示例: t = 1, 1, 1 t = 2, 5, 5 t = 3, 14, 14 t = 4, 30, 30 t = 10, 385, 385 t = 100, 338350, 338350
教科書4.2.5項「多岐条件文」を参考に,if(), else if(), else をすべて用いて次のようなプログラムを作成し,コンパイル・実行せよ.
n を受け取る.実行時に 17, 21, 25, 30, 48, 50, 55, 60 をそれぞれ入力し,実行結果が正しいことを確認せよ.
#include <stdio.h>
int main( void )
{
int n;
scanf( "%d", &n );
return 0;
}
2次方程式の実数解を求める [リスト 4.9] を入力し,コンパイル・実行せよ.[実行結果 4.9] に示される数値を入力し,正しく表示されることを確認すること.また,異なる 2 個の実数解を持つような a, b, c を自分で作成して入力し,解が正しく表示されることを確認せよ.
《以下もできるだけ取り組むこと.難しい場合は,[リスト 4.9]のプログラムを提出してよい.》
次に,異なる 2個の実数解が存在する場合にはそれらの正負に基づいて,
のいずれかを表示するプログラムを if(),else if(),else をすべて用いて作成せよ.[リスト 4.9]で2個の実数解を表示している printf 文の部分を変更すればよい.
scanf で 実数を受け取るときの書式 %lf は,「パーセント エル エフ」です.真ん中の文字は数字の 1 ではありません.)
キーボードから 2 個の整数を受け取り,それぞれ int 型変数 a および b に代入する. a 以上 b 未満 の整数のうち 3 または 5 で割り切れるものをすべて表示するプログラムを for 文を用いて作成せよ.
論理演算子は教科書 p. 124 以降を参照するとよい.動作を検証するのに適した数値の組を 5 組程度入力し,結果をレポートに記すこと.
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
return 0;
}
キーボードから受け取った整数を a および b とする.a 以上 b 未満の正の整数のうち, 3 の倍数であるが 5 の倍数ではない整数の個数を求めるプログラムを作成せよ.
for 文のループ内で if 文を書き,条件式が真ならば変数 cnt をインクリメントすればよい.動作を検証するのに適した数値の組を 5 組程度入力し,結果をレポートに記すこと(例:a = 10, b = 32 の場合:5 個).
#include <stdio.h>
int main(void)
{
int i, cnt; /* cnt は,個数を数えるための変数 */
int a, b;
scanf("%d", &a);
scanf("%d", &b);
cnt = 0; /* cnt を初期化 */
printf( "答えは %d 個です\n", cnt );
return 0;
}
[リスト 4.11] を入力し,コンパイル・実行せよ.ただし,このプログラムは望ましくない例として挙げられており,数値計算の誤差を防ぐためには「カウンタ変数を整数とすべき」と説明されている.これに従い,カウンタ変数 t を int 型に変更し,[実行結果 4.11]と同じ出力が得られるようにプログラムを変更せよ.
sine と cosine は2箇所で定義されています.文法的に誤りとはいえませんが,2重に定義する必要はありません. プログラム 7行目の "double sine, cosine" を削除するか,もしくは 13行目 の "double", 14行目の "double" を削除することが望ましいようです.いずれの削除がよいかは考え方にも依存しますが,変数のスコープを狭くする意味で(「キックオフ C言語」, p. 43,コラム参照),前者の削除が推奨されるようになっているようです.
[リスト 4.11] を参考にして,t = 0, 15, 30, 45, 60, 75, 90 (度) における正弦(sin)と余弦(cos)を表示するプログラムを for 文を用いて作成せよ.角度をラジアンに変換する必要があることに注意.
表示例: t cos sin ------------------------- 0 1.000000 0.000000 15 0.965926 0.258819 30 0.866025 0.500000 45 0.707107 0.707107 60 0.500000 0.866025 75 0.258819 0.965926 90 0.000000 1.000000
以下のプログラムについて,キーボードから入力される値に依存して,表示される値が一致しないことがある.
#include <stdio.h>
int main( void )
{
int a, x, y;
printf("整数を入力して下さい\n");
scanf("%d", &a);
x = a;
y = a;
if( a % 2 == 0 )
x *= 5;
if( a % 3 == 0 )
x -= 2;
if( a % 2 == 0 )
y *= 5;
else if( a % 3 == 0 )
y -= 2;
printf("x = %d, y = %d です.", x, y);
return 0;
}
「キックオフ C言語」の p. 71,4.7節,練習問題 2([2要素による分岐], 「あるお化け屋敷では…」)を解答せよ.