プログラミング言語前期中間試験 June2014 2J プログラミング言語前期中間試験 June2014 担当小坂 printf("%d %d\n",x,y); while (y<50) { y=y+x; x++; } printf("%d %d\n",x,y); 1.次のプログラムの実行結果(コンソール画面 に表示されるままに)を予想し,書きなさい。 ただし,「#include <stdio.h>,return 0」は省 略されている。[60] (1) int main() { int x,y; x=4; y=10*x+5; printf("x=%d y=%d\n",x,y); x++; y=(10*x+5)/10; printf("x=%d y=%d\n",x,y); x++; y=(10*x+7)%10; printf("x=%d y=%d\n",x,y); } } (5) int main() { int n,i,j; int k1,k2; n=8; for (i=0;i<=n/2+1;i++) { k1=i; k2=n-2*k1+1; for (j=0;j<k1;j++) printf("$"); for (j=0;j<k2;j++) printf("*"); for (j=0;j<k1+2;j++) printf("#"); printf("\n"); } } (2) int main() { int x,x2,x3; for (x=0;x<4;x++) { x2=x*x+1; x3=(x2*2+3)%5; printf("%3d %5d %7d\n",x,x2,x3); } printf("%3d\n",x); } (6) int main() { int nmb0,nmb,n,cnt; int i; nmb0=4000; for (i=1;i<=2;i++) { nmb=nmb0*8*i; n=nmb; cnt=0; while (n%10==0) { n=n/10; cnt++; printf("n=%8d, ",n); printf("cnt=%2d\n",cnt); } printf("nmb=%6d ",nmb); printf("cnt=%2d\n",cnt); } } (3) int main() { int x,z; z=0; for (x=0;x<6;x++) { for (x=1;x<6;x++) { printf("%3d",z); z=z+1; } printf("\n"); } } 2.次のプログラムは2つの整数の平均を求め, 小数点以下も含んで平均を求めようとしている。 誤りが 2 箇所あるので,採点者が誤解できないよ うに丁寧に指摘しなさい。 なお指摘しやすいように,行には番号をつけたが, これはプログラムとは無関係である。 [10] (4) int main() { int x,y; y=10; for (x=1; x<3; x++) { y=y+x; } 1/2 プログラミング言語前期中間試験 June2014 01 02 03 04 05 06 07 08 09 10 11 12 13 14 c=(a+b)/2; printf("c=%d\n",c); return 0; #include <stdio.h> int main() { int Altair; int Vega; double Deneb; scanf("%d %d",Altair,Vega); Deneb=(Altair+Vega)/2.0; printf("Altair=%d\n",Altair); printf("Vega=%d\n",Vega); printf("Deneb=%f\n",Deneb); return 0 } } (3) int main() { int a=10,b=13; int c; c=(a+b)/2.0; printf("c=%d\n",c); return 0; } 3.while 文あるいは do-while 文ではループ継続 条件を括弧の中に書くことになっている。 次の条件の時,プログラムではどのような表現に なるか書きなさい。条件だけ書けばよい。 [16] (1)int 型変数 a も b も正の値である (2)int 型変数 a,b は少なくとも片が正の値で ある (3)int 型変数 x は 0 以上 10 未満である (4)int 型変数 y は 10 未満か 20 を超える値で あり,しかも int 型変数 y は偶数である 例 int 型変数 xxx は 0 である → xxx == 0 4.次のプログラムは 2 つの値 10 と 13 の平均値 11.5 を求めようとしている。正しく求められたか どうかは別として,実行結果を予想し,書きなさ い。小数点以下の表示がある場合は小数点以下 3 桁書きなさい。予測不能の場合は予測不能と書き なさい。ただし,「#include <stdio.h>」は省略 されている。 (全問正解で[14]) (4) int main() { int a=10,b=13; double c; c=(a+b)/2.0; printf("c=%d\n",c); return 0; } (5) int main() { int a=10,b=13; double c; c=(a+b)/2; printf("c=%d\n",c); return 0; } (6) int main() { int a=10,b=13; double c; c=(a+b)/2; printf("c=%f\n",c); return 0; } (1) int main() { int a=10,b=13; double c; c=(a+b)/2.0; printf("c=%f\n",c); return 0; } (2) int main() { int a=10,b=13; int c; 2/2 プログラミング言語前期中間試験解答用紙June2014 2J( )名前( 1. (1) (2) (3) (4) (5) (6) 2. (1) (2) 3. (1) (2) (3) (4) 4. (1) (2) (3) (4) (5) (6) ) プログラミング言語前期中間試験解答用紙June2014 2J( )名前( 1. (1) x=4 y=45 x=5 y=5 x=6 y=7 (3) 0 1 2 (2) 3 (5) *********## $*******### $$*****#### $$$***##### $$$$*###### $$$$$####### 4 0 1 2 3 4 1 2 5 10 ) 0 2 3 3 (4) 3 13 10 55 (6) n= n= n= nmb= n= n= n= nmb= 3200, 320, 32, 32000 6400, 640, 64, 64000 cnt= cnt= cnt= cnt= cnt= cnt= cnt= cnt= 1 2 3 3 1 2 3 3 2. (1) scanfのところで各変数の前に&をつけなければならない (2) return 0 の後ろに「;」をつける 3. (1) (2) 0<a && 0<b (3) (2) (3) (4) (5) (6) 0<a || 0<b (4) 0<=x && x<10 4. (1) 演算子の優先順位があるのでカッコは必須 c=11.500 (y<10 || 20<y) && y%2==0 右辺は混合演算なので11.5になり,double型整数に代入され11.5 c=11 整数同士の割り算で11になる c=11 右辺は混合演算なので11.5になるがint型整数に代入したので11になる 「c=」を表示した後,その後は意味不明の値を表示する 「c=」を表示した後,その後は意味不明の値を表示する c=11.000 整数同士の割り算で11になったものをdouble型に代入しても11.0になるだけ https://xythos.tokyo-ct.ac.jp/usr/kosaka/web/for_students/CIntro/operator.html の「B.1 C言語における算術演算子」の「整数と実数の混合演算」参照
© Copyright 2025 ExpyDoc