ポインタ2

課題4

下記に、文字列を1文字ずつ表示させるプログラムが示されている。この プログラムをpointer4.cとして書き、正しく実行されることを確認せよ。 また、配列の課題5の プログラムとの違いを確認せよ。

#include <stdio.h>

int main(void)
{
    char name[] = "Wakaba-ku";
    char *p;

    for(p=name; *p != '\0'; p++){
        printf("%c\n", *p);
    }

    return 0;
}
(実行結果)
% ./a.out
W
a
k
a
b
a
-
k
u

課題5

下記に、文字列の長さを表示させるプログラムが示されている。この プログラムをpointer5.cとして書き、正しく実行されることを確認せよ。 また、配列の課題6の プログラムとの違いを確認せよ。

#include <stdio.h>

int main(void)
{
    char name[] = "Wakaba-ku";
    char *p;
    int n=0;

    for(p=name; *p != '\0'; p++){
        n++;
    }

    printf("n = %d\n", n);

    return 0;
}

課題6

任意の長さの文字列(ここでは英数字の文字列とする)を入力させ、下記の実行例の ように先頭の1文字が順々に削除されて表示させたい。そのためのプログラムを 下記に用意したが一部が"******"で隠されている。それを補って、プログラムを pointer6.cとして完成させ、正しく実行されることを確認せよ。当然であるが、表示 されている"*****"の行数は適当であるため、参考にならない。

#include <stdio.h>

int main(void)
{
    char  moji[20], *pmoji;


    printf("10文字程度の英数字の文字列を入力してください(スペースなしで)\n");
    scanf("%s",moji);

    /* ポインタに文字列のアドレスを代入 */
    *****************************
    *****************************


    /* 文字列表示(先頭の1文字が順々に削除) */
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************

    return 0;
}  
(実行例:赤字が入力文字)
hp3225[susaki]501:~/program% 
hp3225[susaki]501:~/program% ./a.out
10文字程度の英数字の文字列を入力してください(スペースなしで)
abc12345defg
abc12345defg
bc12345defg
c12345defg
12345defg
2345defg
345defg
45defg
5defg
defg
efg
fg
g
hp3225[susaki]502:~/program% 

課題7

任意の長さの文字列(ここでは英数字の文字列とする)を入力させ、下記の実行例の ように末端の1文字から順々に表示させたい。そのためのプログラムを 下記に用意したが一部が"******"で隠されている。それを補って、プログラムを pointer7.cとして完成させ、正しく実行されることを確認せよ。

#include <stdio.h>

int main(void)
{
    int i, length;
    char  moji[20], *pmoji;


    printf("10文字程度の英数字の文字列を入力してください(スペースなしで)\n");
    scanf("%s",moji);

    /* ポインタに文字列のアドレスを代入 */
    *****************************
    *****************************


    /* 文字列表示(末端の1文字から順々に表示) */
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************
    *****************************

    return 0;
}  
(実行例:赤字が入力文字)
hp3225[susaki]501:~/program% 
hp3225[susaki]501:~/program% ./a.out
10文字程度の英数字の文字列を入力してください(スペースなしで)
TokyoJoho
o
ho
oho
Joho
oJoho
yoJoho
kyoJoho
okyoJoho
TokyoJoho
hp3225[susaki]502:~/program% 

須ア純一 京都大学大学院 工学研究科社会基盤工学専攻 空間情報学講座
[C言語 演習問題トップページ] [須ア純一ホームページ]