back
Update 内容を静大の授業に合わせて微調整 00/5/20. new 99/12/2.

模擬試験 2000

注意:


  1. : 「コンパイル」とはどういう事か,次の中から選べ。
    1. ユーザの使う計算機を,サーバに接続して,データ通信すること
    2. 近頃はやりのゲームの一種
    3. 人間が理解できる手順書を,普通の人が見てわからない手順書に変換すること


  2. : 次に挙げる文字列それぞれについて,C言語の変数名として使用可(可)なのか, 使用不可「不可」なのか答えよ。
    1. a
    2. if
    3. Apple
    4. Dos/V
    5. 2octabe
    6. YesHeCan
    7. His-PC
    8. win98
    9. c++
    10. index.html


  3. : 次の式は,変数 a, b, c, d, e によって出来た数式である。 これらを C言語の文法に合わせて書き直しなさい。
    1. a b + c2d
    2. 1
      b
      a c
      + c
      d + e


  4. : 次に示すそれぞれのプログラムは動くのかどうか答えよ。 もしも動かないのなら,理由も記せ。
    (a)
    #include <stdio.h>
    main(){ printf("abcde"); }
    

    (b)
    #include <stdio.h>
    main(){
    	printf("abcde")
    }


  5. : 次の整数演算の結果,変数 a 〜 g の値はいくつか,答えなさい。
    int a,b,c,d,e,f,g,i,j;
    
    i=10; j=3;
    a=i+j; b=i-j; c=i*j; d=i/j; e=(-i)/j; f=i/(-j); g=(-i)/(-j);


  6. : 次のプログラムを実行したとき,各 printf 文にて表示させた i と a はいくらか答えなさい。
    int a,i;
    
    i=2;
    a=i+(i++);
    printf("(1) i,a=%d,%d \n", i, a);
    
    i=2;
    a=(i--)+i;
    printf("(2) i,a=%d,%d \n", i, a);
    
    i=2;
    a=i+(++i);
    printf("(3) i,a=%d,%d \n", i, a);
    
    i=2;
    a=i+i;
    i=i+1;
    printf("(4) i,a=%d,%d \n", i, a);
    
    i=2;
    a=i+i;
    i=i-1;
    printf("(5) i,a=%d,%d \n", i, a);
    
    i=2;
    i=i+1;
    a=i+i;
    printf("(6) i,a=%d,%d \n", i, a);
    


  7. : 直前の問題において, 前半の 3 本のプログラムと,後半の 3 本のプログラムについて比較し, それぞれの優れている点を述べなさい。


  8. : 次の実数演算,または整数と実数の混合演算の結果, 変数 a 〜 j はいくらになるのか答えなさい。
    int m,n;
    float x,y;
    int a,b,c,d,e,f,g,h;
    int i,j
    
    m=18; n=5; x=18.0; y=5.0;
    a=m.n; b=x/y; c=x/y-m/n; d=(x/y)-(float)(m/n); e=(x/y)-(float)m/n; f=x/y*n/m; g=m/n*y/x; h=m*y/n/x; i=m/n; j=x/y;


  9. : 次にあげるプログラムリストは,いずれも,あるプログラムの一部であり,
    ans = #### (ただし ### とは数字のこと)
    という表示を, 「10000」回繰り返すために作られたが, うまく動くものもあれば,動作のおかしいものもあるという。
    そこで,それぞれのプログラムについて,
    @ 最初に表示する ans = #### の値,
    A 最後に表示する ans = #### の値,
    B 表示された ans = #### の回数
    を示せ。
    もしもその値が予測できないなら,「予測できない」と書くこと。
    また,もしも 10000 回の表示ができないならば,
    C どこをどう改良したら 10000 回の繰り返しが出来る様になるか修正案を記せ。 ただし,最初に表示する数値と,変化分は変えない事。
    (a)
    int i;
    
    i=1;
    while(i<=10000){
    	printf("ans = %d\n",i); 
    	i=i+1;
    }

    (b)
    int i;
    
    i=1;
    do{
    	i=i+1;
    	printf("ans = %d\n",i); 
    }while(i<=10000);
    

    (c)
    int i;
    
    for(i=0; i<10000; i=i+1){
    	printf("ans = %d\n",i); 
    }

    (d)
    int i;
    
    for(i=2; i<30000; i=i+3){
    	printf("ans = %d\n",i); 
    }

    (e)
    int i;
    
    i=5000;
    while(i>-5000){
    	printf("ans = %d\n",i); 
    	i=i-1;
    }

    (f)
    int i;
    
    i=1;
    while(1){
    	if(i==20000) break;
    	i=i+2;
    	printf("ans = %d\n",i); 
    }

    (g)
    float a;
    
    a=0.0;
    while(a<10000.0){
    	a=a+1.0;
    	printf("ans = %f\n",a); 
    }

    (h)
    float a;
    
    a=0.0;
    while(a<1000.0){
    	a=a+0.1;
    	printf("ans = %f\n",a); 
    }


  10. : 次のプログラムリストは,あるプログラムの一部である。
    @の所では変数 i の値は 0 から 9 まで変化する。 if文により Aにて出力するのは i がいくつの時なのか,値をすべて記せ。
    int i;
    
    for(i=0; i<10; i=i+1){
         printf("i = %d\n",i);      @
         if( ( (5<i) && (7>i) ) || (i==2) ){
              printf("  condition = true\n");      A
         }
    }


  11. : 次のプログラムリストは,n × n の掛算表を書き出すプログラムである。 ただし,n != 9。
    ところがプログラムにミスがあり,うまく動かないという。
    それでは,
    @ミスの部分を指摘し,修正せよ

    また,本来の掛算表である 9 × 9 まで示にしたいのだが,
    Aそのためには何処をどう修正すれば良いか答えよ。
    #include <stdio.h>
    main()
    {
    	int i,j;
    
    	for(i=1; i<=7; i=i+1){
    		for(j=1; j<=7; j=i+1){
    			printf("%5d", i*j);
    		}
    		printf("\n");
    	}
    }


  12. : 次のプログラムリストは,数当てゲームである。
    (多少の文法ミスは減点しないので,) このプログラムを改良してもっと面白いゲームにせよ。
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    main(){
    	int i,j,k;
    
    	srand( (unsigned)time( NULL ) );
    	
    	do{ i=rand(); }while(i>1000);
    
    	do{
    		printf("Guess the Number =");
    		scanf("%d", &k);
    		if(k<i){ printf("Too Little!\n"); }
    		if(k>i){ printf("Too Large!\n"); }
    	}while(k!=i);
    
    	printf("****************************\n");
    	printf("*** (^o^) Congratulation ***\n");
    	printf("****************************\n");
    }