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


 
Follow @vivisuke Tweet

 

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

Q1: 文字を検索する関数を完成させなさい。
const char *strchr(const char *str, char c)
{
    while( *str !=  ) {
        if( *str++ ==  )
            return 0;
    }
    return str;
}


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


Q3: 文字列末尾に文字を追加する関数を完成させなさい。
void push_back(char *str, char c)
{
     (*str != '\0') {
        ++str;
    }
    *str++ = c;
     = '\0';
}


Q4: 文字列の先頭に数値文字列があれば、それを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;       // 値を返す
}


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




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

最近10人の平均点:2.9
0 6 2 5 2 5 2 4 0 3 (latest)
最近100人の平均点:4.8
最近1000人の平均点:3.9
過去全部(5479人)の平均点:4.2

満点獲得者名と記念コメント:
25/03/02 22:35 名無し さん
25/01/21 18:58 名無し さん
25/01/18 07:22 名無し さん
25/01/18 04:38 名無し さん
25/01/17 10:16 名無し さん
25/01/14 15:05 名無し さん
25/01/14 06:28 名無し さん
25/01/13 23:54 名無し さん
25/01/13 22:55 名無し さん
25/01/11 10:16 名無し さん
25/01/10 00:08 名無し さん
25/01/09 02:23 名無し さん
25/01/08 16:24 名無し さん
25/01/06 08:44 名無し さん
25/01/04 15:42 名無し さん
25/01/04 08:49 名無し さん
25/01/02 02:43 名無し さん
24/12/30 22:55 名無し さん
24/12/28 02:08 名無し さん
24/12/23 09:41 名無し さん

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