1 / 2 2J プログラミング言語 前期末試験 July 2013 担当小坂 1.次の

2J プログラミング言語 前期末試験
2J プログラミング言語 前期末試験 July 2013 担当小坂
1.次のプログラムの画面に現れる実行結果を予
測して書きなさい。ただし#include <stdio.h>は
省略されており,
「main() {」と「return 0; }」
も省略されているものとする。
(1)
int i;
for (i=4; i<11; i++) {
if (i<5) {
printf("tokyo ");
} else if (i<6) {
printf("osaka ");
} else if (i<9) {
printf("kobe ");
} else {
printf("nagoya ");
}
if (i<=5) {
printf("hi ");
}
if (i<=6) {
printf("hello ");
}
if (i<10) {
printf("bye ");
}
printf("\n");
}
1.の問題では,プロ
グラムとして不自然な
ものもある。デバッグ
途中のプログラムを想
定しているので,その
まま答えなさい。
(2)
int n,i,j;
n=5;
for (i=0;i<n;i++) {
for (j=0;j<n;j++) {
if (i==0||n-2<i||j==0||n-2<=j) {
printf("*");
} else {
printf("+");
}
}
printf("\n");
}
(3)
int x,y;
x=5;
y=10;
while (y<25) {
y=y+x;
x++;
}
printf("%d %d\n",x,y);
for (x=1; x<4; x++) {
y=y+x;
}
printf("%d %d\n",x,y);
(4)
int x=20;
do {
printf("x=%d\n",x);
if (x%2==0) {
x=x/2;
} else {
x=5*x+1;
}
} while (x<100);
printf("x=%d\n",x);
(5)
int day, sum;
sum=0;
for ( day=1; day<=7; day++ ) {
if
(day<3)
{
sum=sum+5;
} else
if (day<5) {
sum=sum+10;
} else
if (day<7) {
sum=sum+4;
} else
{
sum=sum+2;
}
printf("day= %d sum= %4d\n",day,sum);
}
printf("day= %d sum= %4d\n",day,sum);
(6)
int day,sum;
sum=0;
for ( day=1; day<=7; day++ ) {
switch
(day) {
case 2:
sum=sum*2;
break;
case 5:
sum=sum+10;
break;
default:
sum=sum+2;
break;
}
printf("day= %d sum= %4d\n",day,sum);
}
printf("day= %d sum= %4d\n",day,sum);
1/2
2J プログラミング言語 前期末試験
(7)
int ary[10]={25,64,12,50,10,30,40};
int i;
int y=0;
for (i=1;i<5;i++) {
printf("array[%d]=%d\n",i,ary[i]);
y+=ary[i]; /*y=y+ary[i]と同じ意味*/
printf("y=%d\n",y);
}
printf("yfinal=%d\n",y);
と 10000 の間に空白が 1 つあるようになっている。
「 Good morning. 」 が 解 答 の 場 合 は 「 Good △
morning.」のように空白を△で示せ。
(2)
x
y=e の表を作りたい。実行結果のような表を作る
には,四角の中にどのように記述すればよいか答
えなさい。
int i;
double x;
double y;
printf("
x
y=exp(x)\n");
for (i=1; i<=100; i++) {
x=(double)i/10.0;
y=exp(x);
printf("%6.3lf %13.6lf\n",x,y);
}
(8)
int ary[10]={55,34,25,64,12,50,10,8};
int i;
int y=ary[0];
int z=ary[0];
for (i=1;i<7;i++) {
if (y<ary[i]) y=ary[i];
if (ary[i]<z) z=ary[i];
printf("ary[%d]=%d, y,z=%d %d\n",i,ary[i],y,z);
}
printf("yfinal=%d\n",y);
printf("zfinal=%d\n",z);
実行結果
x
y=exp(x)
0.100
1.105171
0.200
1.221403
0.300
1.349859
0.400
1.491825
途中省略
9.600 14764.781566
9.700 16317.607198
9.800 18033.744928
9.900 19930.370438
10.000 22026.465795
2.次の問いに答えなさい[10]
ただし,1と同様に,プログラムは実行部分だけ
表現されており,そのほかは省略されていること
とする。
(1)
2
y=x の表を作りたい。実行結果のような表を作る
には,四角の中にどのように記述すればよいか答
えなさい。
ただし,実行結果のように,桁位置をそろえる。
また最終行では,10.000 の前には空白がなく,
10.000 と 22026.465795 の間に空白が 2 つあるよ
うになっている。
「 Good morning. 」 が 解 答 の 場 合 は 「 Good △
morning.」のように空白を△で示せ。
int x;
int y;
printf(" x y=x*x\n");
for (x=1; x<=100; x++) {
y=x*x;
printf("%3d %5d\n",x,y);
}
3.while 文,do-while 文あるいは if 文では条件
式を括弧の中に書くことになっている。
次の条件の時,プログラムではどのような表現に
なるか書きなさい。条件だけ書けばよい。
[10]
x y=x*x
1
1
2
4
3
9
4
16
途中省略
96 9216
97 9409
98 9604
99 9801
100 10000
(1)int 型変数 a の一の位は 0 である
(2)int 型変数 a も b も両方とも正の値である
(3)int 型変数 a,b は少なくとも片方が正の値で
ある(両方とも正であることもある)
(4)int 型変数 x は 0 以上 100 未満である
(5)int 型変数 y は 10 未満か,または 100 以上の
値である
ただし,実行結果のように,桁位置をそろえる。
また最終行では,100 の前には空白がなく,100
例
2/2
int 型変数 xxx =は 0 である → xxx == 0
プログラミング言語前期末試験解答用紙
2J( )名前( 1. (1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
2. (1)
(2)
3. (1)
(2)
(3)
(4)
(5)
)
プログラミング言語前期末試験解答用紙
2J( )名前( 1. (1) tokyo hi hello bye
osaka hi hello bye
kobe hello bye
kobe bye
kobe bye
nagoya bye
nagoya
(3) 8 28
4 34
(5) day=
day=
day=
day=
day=
day=
day=
day=
(2) *****
*++**
*++**
*++**
*****
(4) x=20
x=10
x=5
x=26
x=13
x=66
x=33
x=166
1
2
3
4
5
6
7
8
sum=
sum=
sum=
sum=
sum=
sum=
sum=
sum=
5
10
20
30
34
38
40
40
(7) array[1]=64
y=64
array[2]=12
y=76
array[3]=50
y=126
array[4]=10
y=136
yfinal=136
(6) day=
day=
day=
day=
day=
day=
day=
day=
3. (1)
(3)
(5)
sum=
sum=
sum=
sum=
sum=
sum=
sum=
sum=
(8) ary[1]=34,
ary[2]=25,
ary[3]=64,
ary[4]=12,
ary[5]=50,
ary[6]=10,
yfinal=64
zfinal=10
%3d△%5d\n
a%10 == 0
0<a || 0<b
y<10 || 100<=y
2
4
6
8
18
20
22
22
y,z=55
y,z=55
y,z=64
y,z=64
y,z=64
y,z=64
34
25
25
12
12
10
%6.3f%14.6f¥n
%6.3lf△%13.6lf¥n
%6.3lf%14.6lf¥n でも可
%3d%6d¥n でも可
2. (1)
1
2
3
4
5
6
7
8
(2)
(2)
(4)
%6.3f△%13.6f\n
0<a && 0<b
0<=x && x<100
)