$ ./a.out | less
実習課題
以下に示す配列を用意します.
char str[5]="abcd"; |
この文字列を %s を使って画面に表示し,さらには %c を使って表示させるプログラムを作成しましょう.
文字列の配列を用意して,それを逆順に表示するプログラムを作成しましょう.
abcdefg gfedcba |
以下に示す配列を用意します.
int ary[5]={65, 75, 85, 95, 105}; |
この配列の各要素を for 文により画面に出力する際に, printf の中で %d を使う場合と %c を使う場合で結果を比較してみましょう.
abcdefg bcdefga cdefgab defgabc efgabcd fgabcde gabcdef |
char str[11] = "abcdefghij"; |
0から5までの整数 m と2から4までの整数 n の二つを乱数を用いて発生させます.配列 str の m 番目の要素を n 回繰り返すように文字列の一部を置き換えて表示するプログラムを作成しましょう.
m=4 and n=3 abcdeeehij |
アルファベットの小文字26文字の範囲内の文字をランダムに20文字表示するプロ グラムを作成しましょう.なお,文字の重複はあっても良いものとします.
nwlrbbmqbhcdarzowkkyh |
教科書のp.143からのASCIIコード表を利用すると,アルファベットを数値で扱う ことが出来ます.そこでコード表にある整数値を要素として持つ int 型の配列を作り,上の例のように %c を使って教科書のp.14にある例 題2.4のようにコードから文字を表示させます.
前問を改造し,アルファベット順に並べ直して表示する機能を付加しましょう.
nwlrbbmqbhcdarzowkky abbbcdhkklmnoqrrwwyz |
以下に示す配列を用意する.
char str[27] = "abcdefghijklmnopqrstuvwxyz"; |
1桁の正の整数を乱数で発生させて,その文字数分のところで毎回スペースを入れ て表示させましょう.
4 abcd efgh ijkl mnop qrst uvwx yz |
この問題では if 文と剰余の使用法がポイントです.
前問の配列を使用してプログラムを一部改造します.1桁の正の整数を乱数で発生させてその文字数分ずらし て表示させましょう.
3 xyzabcdefghijklmnopqrstuvw |
数値を値に持つ変数については,値を別の変数に代入することは等号記号 = を用いて簡単に行えますが,文字列をそのまま代入することはC言語では簡単ではありません.そこで,文字列の値の代入に関する方法として,以下の2つを試して下さい.
char str1[4] = "abc"; char str2[4]; |
のような2つの文字列配列を用意して,配列 str1 の中身である文字列 abc を配列 str2 に移す操作を行なう場合,for 文を使用して,1文字ずつ代入するプログラムを作成しましょう.
次に,C言語に用意されている文字列コピー関数 strcpy を使用して試しましょう.この関数は教科書のp.91に説明があるように以下のようにして使用します.また,このとき,教科書のp.89にあるようにヘッダファイルを追加する必要がありますので注意してください.
char str1[4] = "abc"; char str2[4] strcpy(str2, str1); printf("%s\n", str2); |
"abcde" の5文字を乱数を利用してランダムに入れ換える操作を,再びもとの文字列である "abcde" に戻るまで続けるプログラムを作成しましょう.文字列のランダム化は,適当な二つの乱数を発生させてその文字どうしを入れ換える操作を10回繰り返すこととします.
ここで,文字列が同じかどうかを比較するための関数 strcmp も紹介しておきます.前問と同様にヘッダで <string.h> をインクルードして使用します.この関数は引数に与えられた文字列が一致する場合には数値の0を戻り値として返す関数です.ですので,今回の場合は無限ループの中で以下のように使用すれば実現できます.
if(strcmp(str, "abcde") == 0) break; |
Start: abcde 1: caedb 2: ecbad 3: adebc 4: aebdc 5: decba 6: deacb 7: abedc 8: bcaed 9: daebc 10: ecbda 11: abced 12: adbec 13: badec 14: eacdb 15: ebdac 15: eadbc 17: dabec 18: dcabe 18: deacb 20: ecadb 21: becda 22: eacbd 23: aedbc 24: abcde |
このプログラムは少ないときには数回で終わりますが,長いときは1000回近くランダム化を続けることもあります.