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


 
Follow @vivisuke Tweet

 

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

Q1: 以下の空欄に数字を入れなさい
char へのポインタ ptr1 をインクリメントすると、ポインタの値は増えます。
int へのポインタ ptr2 をインクリメントすると、ポインタの値は増えます。


Q2: 引数に 文字列 dst, 文字列 src をとり、src を dst 末尾にコピー(src と dst を連結)する関数を完成させなさい。
void my_strcat(char *dst, const char *src)
{
    while(  '\0' ) {
        dst;
    }
    while( (*dst++ = *src++) != '\0' ) {  // src の指す文字列を dst にコピーする
    }
}


Q3: 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);
}


Q4: プログラム起動時の引数の数を表示するコードは?
#include <iostream>
int main( argc, char *argv[])
{
    std::cout <<  << "\n";
    return 0;
}


Q5: 文字列内の文字の順序を反転("abcd"→"dcba")する関数を完成させなさい。
void my_strrev(char *str)
{
    int len = strlen(str);
    char *ptr = str + len;  // 末尾を指すポインタを用意
    for(int i = 0; i < len/2; ++i) {  //      len の半分の回数ループ
        char t = ;
        *ptr = ;
        *str++ = t;
    }
}




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

最近10人の平均点:7.1
5 7 8 8 10 8 7 8 10 0 (latest)
最近100人の平均点:4.9
最近1000人の平均点:3.5
過去全部(2908人)の平均点:4.1

満点獲得者名と記念コメント:
19/04/22 16:38 🐔 さん
19/04/20 13:52 名無し さん
19/04/16 13:19 名無し さん
19/04/13 12:49 名無し さん
19/04/11 18:38 名無し さん
19/04/08 04:40 名無し さん
19/04/07 02:53 名無し さん
19/04/01 09:28 名無し さん
19/03/19 02:54 名無し さん
19/03/18 03:13 名無し さん
19/03/17 07:45 名無し さん
19/03/14 09:02 名無し さん
19/03/10 04:01 名無し さん
19/03/04 20:51 名無し さん
19/03/04 06:39 名無し さん
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 名無し さん

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