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


 
Follow @vivisuke Tweet

 

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

Q1: 文字列先頭に文字を挿入する関数を完成させなさい。
void push_front(char *str, char c)
{
    const int len = strlen(str);
    for (int i = len + 1; --i >= 0; ) {
        str[] = str[];
    }
    *str = c;
}


Q2: 文字数を数える関数を完成させなさい。
int strlen(const char *str)
{
    int i = 0;
    for(; str != ; ++i) {
    }
    return i;
}


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


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


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人の平均点:6.1
8 9 5 8 8 6 5 6 3 3 (latest)
最近100人の平均点:5.5
最近1000人の平均点:4.2
過去全部(3740人)の平均点:4.1

満点獲得者名と記念コメント:
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 名無し さん
20/02/26 03:52 名無し さん
20/01/26 13:54 名無し さん
19/12/28 17:46 名無し さん
19/12/27 14:22 名無し さん
19/12/23 12:47 名無し さん
19/12/20 11:32 名無し さん
19/12/18 04:25 名無し さん

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