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 )
© Copyright 2025 ExpyDoc