プログラミング論I 2008年
(問題1) 画面に「Let it be」と出力して終了するプログラムを記述せよ."「"記号と"」"記号は出力する必要はない.
必ず,"be"の後に改行コードを出力せよ.
また,「#include」なども含め,コンパイル可能なソースコードを全て記述せよ.
(問題2) for文を用いて 300 から 399 までの100個の数字を出力するプログラムを記述せよ.各数字の後に改行コード を出力せよ.
(問題3) 下のプログラム実行したときの出力はどのよう になるか記せ.
(問題4) 下のプログラム実行したときの出力はどのよう になるか記せ.
(問題5) for文を用いて,右のように 0.4 ずつ減少する10個の実数を表示するプログラムを記述せ よ.double 型の変数 x をprintf を用いて出力するには,printf("%lf", x) をすれば良い.
実数を表示する際の桁数(小数第何位まで出力されるか)は無視してよい.
(問題6) for文を用いて 300 から 399 までの100個の数字の和を計算し,計算結果を出力するプログラムを記述せよ.
必ず,for文を用いて加算を繰り返すプログラムとせよ.
(問題7) for文を用いて 1.12×1.22×1.32×1.42×1.52×1.62×1.72×1.82×1.92×2.02を求めるプログラム を記述せよ.
(問題8) 二重の for 文を用いて 右のように出力されるプログラムを作成し,それを記述せよ.
(問題9) 右の連立方程式は,その下の行列の形式で表現することができる.右の連立 方程式をガウスの消去法で解くときの,前進消去による行列の変化の様子を途中経過も 含めて記せ.最終的には,左下にゼロが並ぶこととなる.
(問題10) はさみうち法は方程式の近似解を求める手法の一つである.方程式 f(x)=0 の解が区間 [a,b] に存在する とき,「2点 (a, f(a)) と (b, f(b)) を通る直線」と「X軸」の交点に着目し,解が [a,m] に存在するか 解が [m,b]
に存在するかを調査する.解が区間 [3,9] に存在し f(3)=4, f(9)=-8 であるとき,着目する点のX座標 m と,解が m より大きい条件を記述せよ.
(問題11) 未知の関数 f(x) がある.f(1) = 3 , f(7) = 6 であることが分かっている.一次関数 g(x) を用いて補 完し f(5) を求めるとき,g(x) はどのような関数になるかと,f(5) がどのような値になるかを答えよ.計算の過程も 記述せよ.
10 1 11 1 12 1 10 2 11 2 12 2
13.000000 12.600000 12.200000 11.800000 11.400000 11.000000 10.600000 10.200000 9.800000 9.400000
方程式
x + 2y + z = -4 2x + 3y + z = -9 -3x - 5y - 5z = 1 行列
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
−
−
−
−
−
1 5 5 3
9 1 3 2
4 1 2 1
#include <stdio.h>
void main(){
int i;
for(i=7; i<14; i+=2){
printf("%d\n", i);
} }
#include <stdio.h>
void main(){
int i, j;
for(i=10; i<13; i++){
for(j=20; j<22; j++){
printf("%d %d\n", i, j);
} } }
(問題12) Newton-Raphson 法が 二分法 や はさみうち法 と比べ収束が速いと期待される理由を簡単に記述せよ.
(問題13) 下のプログラムを実行したときに得られる出 力を記述せよ.
(問題14)
右のプログラムを実 行したときに得られ る出力を記述せよ.
(問題15) 右のプログラムを実行したときに 得られる出力を記述せよ.
(問題16) 引数として int 型の値を2個とり,その積(int型)を戻り値として返す関数を記述せよ.関数名は mul とせ よ.関数 mul のみを記述すること.main関数などを記述しないこと.
(問題17) 次の関数を記述せよ.引数として int 型の値を2個とり,第一引数が a,第二引数が b である.戻り値と して a の b 乗を返す.関数名は pwr である.例えば, pwr( 2, 3) は,2の3乗である 8 を返す.
(問題18) 次の関数を記述せよ.引数として int 型の値を2個とり,第一引数が a,第二引数が b である.戻り値と して a 以上 b以下の 整数の合計を返す.関数名は
sum である.例えば, sum( 4, 7) は,4+5+6+7 である 22 を返す.
(問題19) 次のプログラムを作成し,それを記述せよ.変数 x と y を宣言し,x に英語 の点数を,y に数学の点数を格納する.点数が60以上なら合格,59未満なら不合格である.
両科目とも合格であるなら,「両方合格です」と出力し,片方の科目のみ合格なら「片方 合格です」と出力し,両科目とも不合格であるなら「両方不合格です」と出力する.点数 を格納する部分は省略して良い.省略する場合はその部分に(略)を記述せよ.右のサンプ ルを参考にしても良い.出力は必ず1回であることに注意せよ.
(問題20) 右のプログラムはインデントが適切でなく,プログラムの構造を把握しづらい 状態にある.インデントを適切にし,理解しやすい形に変更せよ.
#include <stdio.h>
void func0(){
printf("func0\n");
}
void func1(){
printf("func1 A\n");
func0();
printf("func1 B\n");
}
void func2(){
printf("func2 A\n");
func1();
printf("func2 B\n");
}
void main(){
func2();
}
#include <stdio.h>
void main(){
int i, j;
for(i=0; i<5; i++){
j = i % 2;
if( j == 0 ){
printf("%d\n", i);
} } }
#include <stdio.h>
void main(){
int x, y, z;
x = (略);
y = (略);
}
?
#include <stdio.h>
int func(int a, int b){
return (a*a*b);
}
void main(){
int x, y;
x = func(2, 3);
y = func(2, x);
printf("y=%d\n", y);
}
#include <stdio.h>
void main(){
int i;
for(i=0; i<10; i++){
if( i%2 == 0 || i%3 == 0 ){
printf("%d\n", i);
} } }