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


 
Follow @vivisuke Tweet

 

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

Q1: 文字列を複製する関数を完成させなさい。
char *strdup(const char *str)
{
    const int len = strlen(str);
    char *dst = new char[];
    strcpy(dst, str);
    return ;
}


Q2: first から last の直前までポインタが指すデータの最大値返す関数を完成させなさい。
int my_max(const int *first, const int *last)
{
    int val = INT_MIN;
    while( first != last ) {
        val = std::(, val);
    }
    return val;   // 最大値を返す
}


Q3: 文字列の先頭に数値文字列があれば、それを10進数に変換する関数を完成させなさい。数値文字が無い場合は -1 を返すものとする。
int my_atoi(const char *str)
{
    if( !isdigit(*str) ) {   // str の先頭文字が数字でない場合は -1 を返す
        return -1;
    }
    int val = 0;      // 初期値を 0 に設定
    while( isdigit(*str) ) {  // str の指す先が数字である間
        val = val *  + *str++ - ;
    }
    return val;       // 値を返す
}


Q4: 以下の空欄に数字(10進数)を入れなさい
char *ptr1 = 0x100; char *ptr2 = 0x110; のとき、ptr2 - ptr1 の値はです。
int *ptr1 = 0x100; int *ptr2 = 0x110; のとき、ptr2 - ptr1 の値はです。


Q5: 環状双方向リンクリストから指定ノードを外す関数を完成させなさい
struct Node {
    int    m_value; // ノードの値
    Node    *m_prev;// 前のノードへのポインタ
    Node    *m_next;// 次のノードへのポインタ
};
// ptr1 の次に ptr2 を連結
void link(Node *ptr1, Node *ptr2)
{
    ptr1->m_next = ptr2;
    ptr2->m_prev = ptr1;
}
void removeNode(Node *ptr)
{
    link(, );
}




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

最近10人の平均点:3.6
3 4 0 0 8 3 7 6 5 0 (latest)
最近100人の平均点:4.1
最近1000人の平均点:4.3
過去全部(3852人)の平均点:4.1

満点獲得者名と記念コメント:
21/02/15 03:17 名無し さん
20/12/08 11:27 名無し さん
20/11/27 02:12 名無し さん
20/11/11 10:43 名無し さん
20/10/23 10:58 名無し さん
20/10/15 12:35 名無し さん
20/10/09 20:26 名無し さん
20/09/20 12:55 名無し さん
20/09/19 23:27 名無し さん
20/09/10 14:27 名無し さん
20/08/17 16:45 名無し さん
20/08/16 05:09 名無し さん
20/07/22 14:14 名無し さん
20/07/22 12:24 名無し さん
20/07/16 06:13 名無し さん
20/07/09 15:31 名無し さん
20/04/20 18:06 名無し さん
20/04/16 23:32 名無し さん
20/03/22 12:47 名無し さん
20/03/10 02:53 名無し さん

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