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


 
Follow @vivisuke Tweet

 

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

Q1: 文字列内の文字の順序を反転("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;
    }
}


Q2: 動的配列クラスのサイズ指定コンストラクタを完成させなさい。
class Vector {
public:
    Vector();
    Vector(int sz, int v = 0)
        : m_data()
        , m_capacity(sz)
        , m_size()
    {
        for(int i = 0; i < m_size; ++i)
            m_data[i] = v;
    }
    ~Vector();
private:
    int    *m_data;// アロケートされたデータ領域へのポインタ
    int    m_size;   // データ領域に入っている要素数
    int    m_capacity;// アロケートされたデータ領域サイズ、初期値:8
};


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


Q4: char データ100個分のメモリをアロケートし、char *ptr に格納するコードは?
char *ptr =  char;


Q5: 文字列先頭文字を取り出す関数を完成させなさい。ただし、文字列が空の場合は '\0' を返すものとする。
char pop_front(char *str)
{
    char c = *str;
    if (c != '\0') {
        const char * = ;
        while ((*str++ = *ptr++) != '\0') ;
    }
    return c;
}




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

最近10人の平均点:2.7
5 1 5 2 5 2 6 0 1 0 (latest)
最近100人の平均点:4.4
最近1000人の平均点:3.7
過去全部(1878人)の平均点:4.3

満点獲得者名と記念コメント:
17/08/21 12:44 名無し さん
17/08/17 06:44 名無し さん
17/08/12 22:31 名無し さん
17/08/10 17:31 名無し さん
17/08/09 05:57 名無し さん
17/08/04 11:58 名無し さん
17/08/01 03:42 名無し さん
17/07/29 00:08 名無し さん
17/07/25 02:59 名無し さん
17/07/21 06:01 名無し さん
17/07/18 03:48 名無し さん
17/07/13 07:40 名無し さん
17/07/12 12:55 名無し さん
17/07/09 04:08 名無し さん
17/07/06 07:55 名無し さん
17/07/03 09:57 名無し さん
17/06/29 22:00 名無し さん
17/06/26 18:51 名無し さん
17/06/24 00:07 名無し さん
17/06/20 04:22 名無し さん

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