11/11/17 20:16:31.83
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): アルファベットと空白からなる文字列を処理する以下のような関数を作成せよ。なお各関数は処理が成功したときに1、失敗したときに0を返すものとする。
(1) 先頭からインデックスpで指定される文字までを反転させる関数int reverse(char *s, int p)を作成せよ。例:
char s[] = "abc defg";
reverse(s, 3);
printf("%s¥n", s); // -> " cbadefg"
(2) インデックスpとqで指定される範囲の文字を反転させる関数int reverse2(char *s, int p, int q)を作成せよ。例:
char s[] = "ab cdefg";
reverse2(s, 4, 7);
printf("%s¥n", s); // -> "ab cgfed"
(ヒント: (1)で作った関数が応用できる?)
(3) 単語(空白で区切られた文字)の順序を反転する関数int reverse_word(char *s)を作成せよ。例:
char s[] = "abc de f ghi";
reverse_word(s);
printf("%s¥n", s); // -> "ghi f de abc"
(ヒント: (1)や(2)で作った関数が応用できる?)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:
[5] その他の制限:どれもできるだけ引数で与えられた文字列の上で処理をするようにして無駄なメモリを使わないように心がけよ(よって関数の引数には常に編集可能な文字列を渡すこととする)。