ViVi Home > 技術文書 > ポインタ入門 > ポインタ穴埋め問題集


 
Follow @vivisuke Tweet

 

ポインタ穴埋め問題集 は C/C++ のポインタを学習するため問題集です。
入力エリアに適切な(半角)文字列を入力し、画面下部の【採点】を押してください。
※ sizeof(void*) は 4、sizeof(int) は 4、sizeof(short) は 2 とする。
※ 文字エンコーディングは ASCII 、文字列は '\0' を終端とする。
※ バイトオーダはリトルエンディアンとする。
※ 文字列領域は充分な領域が確保されているものとする。
※ 特に指示が無い限り、ポインタが指す構造体のメンバを参照する場合は (*ptr).mbr ではなく ptr->mbr と記述しなさい。

Q1: char へのポインタ ptr を宣言し、char へのポインタ src の値で初期化するには?
char ptr = ;


Q2: 文字数を数える関数を完成させなさい。
int strlen(const char *str)
{
    int len = 0;
    while( *str++  '\0' ) {
        ++;
    }
    return len;
}


Q3: ノード構造体が以下のように定義されているとき、親ノードの左にノードを追加する関数を完成させなさい。
struct Node {
    int        m_value; // ノードの値
    Node    *m_lhs;   // 左側ノードへのポインタ
    Node    *m_rhs;  // 右側ノードへのポインタ
};
void linkLeft(Node *parent, Node *ptr)
{
    parent-> = ;
}


Q4: 動的配列クラスの reserve(int sz) メンバ関数を完成させなさい。
class Vector {
public:
    Vector();
    ~Vector();
public:
    void reserve(int sz)
    {
        if( sz <=  ) return;     // 既に充分な場合
        while( m_capacity < sz )
            m_capacity *= 2;
        int *data = new int[m_capacity];
        for (int  i = 0; i < m_size; ++i)
            data[i] = m_data[i];
        delete [] m_data;
        m_data = ;
    }
private:
    int    *m_data;// アロケートされたデータ領域へのポインタ
    int    m_size;   // データ領域に入っている要素数
    int    m_capacity;// アロケートされたデータ領域サイズ、初期値:8
};


Q5: first から last 直前までにデータを格納する関数を完成させなさい。ただし、first <= last とする。
void my_fill(int *first, int*last, int d)
{
    while( first !=  ) {
         = d;
    }
}




※ 問題は5問ランダムに表示されます。 総問題数:42
※ 問題・解答に間違いがあった場合は、ツイッター or メール等でご指摘してくださると助かります。

最近10人の平均点:2.3
5 3 3 1 5 1 0 0 0 5 (latest)
最近100人の平均点:2.9
最近1000人の平均点:3.4
過去全部(2820人)の平均点:4.0

満点獲得者名と記念コメント:
19/02/14 12:53 名無し さん
19/02/11 15:21 名無し さん
19/02/07 02:28 名無し さん
19/01/29 04:52 名無し さん
19/01/23 22:33 名無し さん
19/01/23 22:10 名無し さん
19/01/19 04:40 名無し さん
19/01/13 03:51 名無し さん
19/01/06 15:55 名無し さん
18/12/25 12:57 名無し さん
18/12/20 07:27 名無し さん
18/12/19 05:00 名無し さん
18/12/04 04:12 名無し さん
18/11/28 06:00 名無し さん
18/11/28 03:36 名無し さん
18/11/23 11:24 名無し さん
18/11/08 04:47 名無し さん
18/11/05 14:03 名無し さん
18/11/02 02:15 名無し さん
18/11/01 14:33 名無し さん

Copyright (C) 2014 by N.Tsuda, All Rights Reserved.