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


 
Follow @vivisuke Tweet

 

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

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


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


Q3: first から last の直前までポインタが指すデータを合計した値を返す関数を完成させなさい。
int my_accumulate(const int *first, const int *last)
{
    int sum = 0;
    while( first != last ) {
         += ;
    }
    return sum; // 合計値を返す
}


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


Q5: 以下の空欄に数値を入れなさい
16進数の 0x100 を10進数に変換すると 。
16進数の 0x10000 を10進数に変換すると 




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

最近10人の平均点:3.2
0 0 3 0 10 8 0 3 0 8 (latest)
最近100人の平均点:4.3
最近1000人の平均点:4.0
過去全部(2148人)の平均点:4.4

満点獲得者名と記念コメント:
18/02/16 14:36 名無し さん
18/02/13 03:19 名無し さん
18/02/06 08:17 名無し さん
18/01/22 11:50 名無し さん
18/01/17 00:16 名無し さん
18/01/12 09:29 名無し さん
18/01/05 11:03 名無し さん
18/01/04 12:39 名無し さん
17/12/29 06:29 名無し さん
17/12/17 05:25 名無し さん
17/12/11 15:08 名無し さん
17/12/07 07:35 名無し さん
17/12/05 14:49 やっと さん
 「4連荘」
17/12/05 14:47 やっと さん
 「3連荘!!!」
17/12/05 14:45 やっと さん
 「連続満点だーーーーーーーーーー!!!」
17/12/05 14:43 やっと さん
 「満点とれたーーーーーー!!!!!」
17/11/29 08:28 名無し さん
17/11/28 10:07 名無し さん
17/11/23 06:49 名無し さん
17/11/21 00:45 名無し さん

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