Top >C言語 練習問題集

7. 文字列

練習問題 7 - 1

char 型の変数 a、b、c に文字ABCを代入し、3文字連続してABCと表示するプログラムを作成しなさい


char    a;
char    b;
char    c;

a = 'A';
b = 'B';
c = 'C';

printf( "%c%c%c", a, b, c );

練習問題 7 - 2

char 型の変数 a に文字Aを代入し、その変数に演算を施し、小文字aにして表示するプログラムを作成しなさい


char    a;

a = 'A';
a = a + 0x20;

printf( "%c", a );

練習問題 7 - 3

列数を示す数値を入力し、azの 26 文字を指定された列数に従って表示するプログラムを作成しなさい


int     col;
int     i;

scanf( "%d", &col );

for( i = 0 ; i < 26 ; i++ )
{
    if( i > 0 && ( i % col ) == 0 )
        printf( "\n" );

    printf( "%c"'a' + i );
}

練習問題 7 - 4

次のコードに追加し、入力された数値を 16 桁の 2 進数で表示するプログラムを完成させなさい


char    sbinary[17];
int     value;
int     i;

scanf( "%d", &value );

for( i = 15 ; i >= 0 ; i-- )
{
    sbinary[i] = '0' + ( value % 2 );
    value /= 2;
}

sbinary[16] = 0;

printf( "%s", sbinary );

練習問題 7 - 5

次のプログラムを作成しなさい

  • 文字列を入力する
  • 入力された文字列を表示する

char    str[100];

scanf( "%s", str );

printf( "%s", str );

練習問題 7 - 6

文字列を入力し、その文字列の長さ(文字数)を表示するプログラムを作成しなさい


char    str[100];
int     len = 0;

scanf( "%s", str );

while( str[len] != 0 )
    len++;

printf( "length=%d", len );

練習問題 7 - 7

次のプログラムを作成しなさい

  • 文字列を入力する
  • 入力された文字列を逆順に表示する

char    str[100];
int     len = 0;

scanf( "%s", str );

while( str[len] != 0 )
    len++;

for( len-- ; len >= 0 ; len-- )
    printf( "%c", str[len] );

練習問題 7 - 8

文字列を入力し、文字列中のアルファベット小文字を大文字に変換して表示するプログラムを作成しなさい


char    str[100];
int     i;

scanf( "%s", str );

for( i = 0 ; str[i] != 0 ; i++ )
{
    if'a' <= str[i] && str[i] <= 'z' )
        str[i] -= 'a' - 'A';
}

printf( "%s", str );

練習問題 7 - 9

char 型の配列にSPAMという単語を 20 個分格納して表示するプログラムを作成しなさい


char    str[100];
int     i;

for( i = 0 ; i < 20 ; i++ )
{
    str[i*4] = 'S';
    str[(i*4)+1] = 'P';
    str[(i*4)+2] = 'A';
    str[(i*4)+3] = 'M';
    str[(i*4)+4] = 0;
}

printf( "%s", str );
※  9行目、str[(i*4)+4] = 0;は、for文の外にするべきだという意見もあるだろう

練習問題 7 - 10

文字列を入力し、文字列中のアルファベット小文字を取り除いて表示するプログラムを作成しなさい


char    str[100];
int     i, j;

scanf( "%s", str );

for( i = 0, j = 0 ; str[i] != 0 ; i++ )
{
    if( ! ( 'a' <= str[i] && str[i] <= 'z' ) )
        str[j++] = str[i];
}

str[j] = 0;

printf( "%s", str );

練習問題 7 - 11

次のコードに追加し、str1 に str2 を結合して表示するプログラムを完成させなさい


char    str1[100] = "Hello ";
char    str2[] = "World";
int     i;
int     n = 0;

while( str1[n] != 0 )
    n++;

for( i = 0 ; str2[i] != 0 ; i++ )
    str1[n++] = str2[i];

str1[n] = 0;

printf( "%s\n", str1 );

練習問題 7 - 12

次のコードに追加し、str の文字列を逆順にして表示するプログラムを完成させなさい


char    str[] = "Hello World";
int     n = 0;
int     i;
char    t;

while( str[n] != 0 )
    n++;

for( i = 0 ; i < ( n / 2 ) ; i++ )
{
    t = str[i];
    str[i] = str[n-i-1];
    str[n-i-1] = t;
}

printf( "%s\n", str );
PAPER BOWL
NEZEN