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


 
Follow @vivisuke Tweet

 

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

Q1: 文字数を数える関数を完成させなさい。
int strlen(const char *str)
{
    int i = 0;
    for(; str != ; ++i) {
    }
    return i;
}


Q2: int *ptr = new int; でアロケートしたメモリを解放するコードは?
 ;


Q3: 動的配列クラスの [] 演算子オーバロードを完成させなさい。
class Vector {
public:
    Vector();
    ~Vector();
public:
    int &(int ix)
    {
        return ;
    }
private:
    int    *m_data;// アロケートされたデータ領域へのポインタ
    int    m_size;   // データ領域に入っている要素数
    int    m_capacity;// アロケートされたデータ領域サイズ、初期値:8
};


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


Q5: 2分木が、左側のノードの値 ≦ ノードの値 ≦ 右側のノードの値 となるようにソートされている時、指定された値を持つノードを検索する関数を完成させなさい。
struct Node {
    int        m_value; // ノードの値
    Node    *m_lhs;   // 左側ノードへのポインタ
    Node    *m_rhs;  // 右側ノードへのポインタ
};
Node *find(Node *ptr, int value)
{
    if( ptr == 0 )
        return 0;
    if( value ==  )
        return ptr;
    if( value <  )
        return find(ptr->m_lhs, value);
    else
        return find(ptr->m_rhs, value);
}




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

最近10人の平均点:2.8
1 5 1 1 4 1 0 6 6 3 (latest)
最近100人の平均点:2.2
最近1000人の平均点:4.2
過去全部(1562人)の平均点:4.6

満点獲得者名と記念コメント:
17/02/22 07:26 名無し さん
17/02/20 07:41 名無し さん
17/02/18 04:35 名無し さん
17/02/17 06:44 名無し さん
17/02/15 16:34 名無し さん
17/02/13 03:43 名無し さん
17/02/09 17:41 名無し さん
17/02/07 04:10 名無し さん
17/02/05 02:10 名無し さん
17/02/04 23:01 名無し さん
17/02/03 16:02 名無し さん
17/02/02 05:54 名無し さん
17/01/31 04:07 名無し さん
17/01/29 08:14 名無し さん
17/01/28 03:04 名無し さん
17/01/26 04:45 名無し さん
17/01/26 02:36 名無し さん
17/01/24 07:46 名無し さん
17/01/22 13:34 名無し さん
17/01/21 15:57 名無し さん

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