1 C



next up previous
Next: 2 LISP Up: 情報処理の方法と演習 問題 Previous: 0 C(初心者向け)

1 C

1.1
Cにおいてポインタとは何であるかをおおまかに説明せよ。

1.2
一般に、次のプログラムの実行結果はどうなるか。理由も説明せよ。

main()
{
    char a[1];

    pp(4, a);
}

pp(x, p)
int x;
char *p;
{
    char q[1];

    printf("%d\n", (unsigned int)p - (unsigned int)q);
    if(x == 0) return;
    else {
        pp(x - 1, p);
    }
}

1.3
次のa,bに違いはあるか。もしあれば、違いについて説明せよ。

func(a, b)
int *a, b[];
{
    .
    .
}

1.4
intへのポインタを返す関数、関数を返す関数へのポインタの配列、 structureを返す関数へのポインタの配列を宣言せよ。

1.5
unionを使う理由を述べよ。

1.6
Big endian, little endianについて説明せよ。

1.7
一般に、次のプログラムの実行結果はどうなるか。理由も説明せよ。

main()
{
    int x;

    abc(x++, x++);
}

abc(x, y)
int x, y;
{

    printf("%d\n", x - y);
}


上のプログラムだとコンパイラによってはヲーニングやエラーが出るので、 以下に或る意味同等のプログラムを示す。 こちらで考えてもよい。 以下のプログラムの方が分かりやすいかもしれない。


#include <stdio.h>

void abc(x, y)
int x, y;
{
    printf("%d\n", x - y);
}

int inc(x)
int *x;
{
    return (*x)++;
}

int main()
{
    int x;

    abc(inc(&x), inc(&x));
    return 0;
}

1.8
Cで階乗を計算するプログラムを再帰呼び出しを用いる場合と 用いない場合と両方記述せよ。また、実際の計算機でそのプログラムを動かし た場合、どのような整数値の階乗も正しく求められるか?

1.9
Cにおける浮動小数点演算の精度について述べよ。

1.10
Cの基本型(int, char等)のメモリ上での大きさについて述べよ。



Takashi SAKURAGAWA
Wed Nov 8 12:44:37 JST 1995