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


 
Follow @vivisuke Tweet

 

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

Q1: first から last 直前までにデータを格納する関数を完成させなさい。ただし、first <= last とする。
void my_fill(int *first, int*last, int d)
{
    while( first !=  ) {
         = d;
    }
}


Q2: 双方向リンクリストのノードを連結する関数を完成させなさい
struct Node {
    int    m_value; // ノードの値
    Node    *m_prev;// 前のノードへのポインタ
    Node    *m_next;// 次のノードへのポインタ
};
// ptr1 の次に ptr2 を連結
void link(Node *ptr1, Node *ptr2)
{
     = ptr2;
     = ptr1;
}


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


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




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

最近10人の平均点:1.8
0 0 0 0 4 10 2 2 0 0 (latest)
最近100人の平均点:1.9
最近1000人の平均点:4.1
過去全部(5380人)の平均点:4.2

満点獲得者名と記念コメント:
24/11/12 16:41 名無し さん
24/11/12 07:40 名無し さん
24/11/08 23:43 名無し さん
24/11/08 18:06 名無し さん
24/11/08 00:25 名無し さん
24/11/05 02:51 名無し さん
24/11/04 12:01 名無し さん
24/11/02 17:49 名無し さん
24/10/31 01:50 名無し さん
24/10/28 23:24 名無し さん
24/10/28 14:32 名無し さん
24/10/26 09:55 名無し さん
24/10/26 07:06 名無し さん
24/10/23 21:08 名無し さん
24/10/22 17:45 名無し さん
24/10/19 21:10 名無し さん
24/10/19 19:24 名無し さん
24/10/17 14:24 名無し さん
24/10/15 07:39 名無し さん
24/10/11 18:25 名無し さん

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