プログラミング実習II (2026) 課題
char 型変数による文字の扱いは教科書3章(特に 3.1.4項)や 4.2節で学んでいる.これらを読み直してから課題に取り組むこと.
(文字の復習)キーボードから入力された文字を表示するプログラムを作成する.
char 型変数 x に代入する.scanf による文字の受け取り方は[リスト 3.5]を参照せよ.scanf の書式は %c とする.printf の書式を %c および %d として x を表示せよ.実行の際に,キーボードから入力する際の文字として a, b, c, A, B, C, 1, 2, 3 を試し,その結果を確認すること.
(文字の復習)キーボードから入力された大文字/小文字を変換して表示するプログラムを作成する.
char 型変数 x に代入する.if(), else if(), else をすべて用いて以下の処理を行え.文字の種類の判別は [リスト 4.3] が参考になる.
x に格納された文字が大文字であるなら,対応する小文字に変換して表示,x に格納された文字が小文字であるなら,対応する大文字に変換して表示,[リスト 7.3]を入力し,実行せよ.さらに,以下のプログラムに示される行をそれぞれ適切な場所に写し,文字配列の初期化が適切に行えるか確認せよ.7.1.3項を参考にすること.なお,strcpy 関数を使用する上では,ライブラリ <string.h> を要することに注意せよ.
char str2[21] = "It is Tuesday today.";
char str3[] = "It is Tuesday today.";
printf( "%s\n", str2 );
printf( "%s\n", str3 );
[リスト 7.4]に関する記述を読んだ上で,NULL 文字が代入されず文字配列の終端がわからない場合の問題を理解せよ.その上で [リスト 7.4] を入力・実行することで,実行結果を確認せよ(結果は環境に依存し,不具合が観察されるとは限らない).
さらに,下に示す内容を書き加えて実行することで,文字配列の要素に値を代入(あるいは初期化)していない状態で生じ得る現象を観察してレポートに記せ.
char buff[ 100 ];
char buff2[ 100 ] = "";
for ( int i = 0; i < 100; i++ ) {
printf("%d ", buff[ i ]);
}
printf("\n");
for ( int i = 0; i < 100; i++ ) {
printf("%d ", buff2[ i ]);
}
printf("\n");
下のプログラムを実行せよ.標準出力に表示される結果 (1)~(8) に対して,なぜそのような文字列が表示されるのかを説明せよ.
'0' の文字コードは 48,'\0' の文字コードは 0 であることに注意せよ.
(説明の例)
(0) s = "kwansei" と表示される.
これは,この時点での s の内容が順に
'k', 'w', 'a', 'n', 's', 'e', 'i', '\0'
であり,文字列としては "kwansei" を表すからである.
#include <stdio.h>
int main(void)
{
char s[8];
s[0]='k'; s[1]='w'; s[2]='a'; s[3]='n';
s[4]='s'; s[5]='e'; s[6]='i'; s[7]='\0';
printf("(0) s = \"%s\"\n", s);
s[0]='K';
printf("(1) s = \"%s\"\n", s);
s[4]='\0';
printf("(2) s = \"%s\"\n", s);
s[4]='s';
printf("(3) s = \"%s\"\n", s);
s[6]='0';
printf("(4) s = \"%s\"\n", s);
s[5]=48;
printf("(5) s = \"%s\"\n", s);
s[4]=0;
printf("(6) s = \"%s\"\n", s);
s[0]='\0';
printf("(7) s = \"%s\"\n", s);
s[0]='k';
printf("(8) s = \"%s\"\n", s);
return 0;
}