C言語関係掲示板

過去ログ

No.1293 文字列を逆順に出力するプログラム

[戻る] [ホームページ]
No.17201

逆順のプログラム
投稿者---かなみ(2004/10/09 23:49:39)


文字を読み込んで、逆順に出力するプログラムを作りなさいという問いなんですが、さっぱりわかりません。例えばmailと打ち込むとliamと出力されるプログラムなんですが・・・教えてくださいm(__)m


No.17202

Re:逆順のプログラム
投稿者---王町(2004/10/10 00:04:09)


【掲示板ご利用上の注意】の上から2番目を声に出して
100回唱和。



No.17203

Re:逆順のプログラム
投稿者---επιστημη(2004/10/10 01:00:17)


>文字を読み込んで、逆順に出力するプログラムを作りなさいという問いなんですが、さっぱりわかりません。

1. 文字列 str[] の i番目とj番目を交換しなさい
2. i:先頭, j:末尾として [1] を行いなさい
3. i=i+1, j=j-1 して[1]を行いなさい
4. i < j である間、[3]を繰り返しなさい



No.17208

Re:逆順のプログラム
投稿者---monkey(2004/10/10 12:38:10)


> 文字を読み込んで、逆順に出力する

逆順で「出力」するだけなら、次の方法でも可でしょう。
(1) i=(文字列str[]の文字数-1)とする
(2) str[i]を出力(一文字)する
(3) iが0なら終了する
(4) i=i-1として(2)に戻る


No.17211

Re:逆順のプログラム
投稿者---かずま(2004/10/10 16:37:29)


#include <stdio.h>

void rev(void)
{
    int c = getchar();
    if (c != '\n') rev(), putchar(c);
}

int main(void)
{
    rev(); putchar('\n'); return 0;
}
こんなプログラムは書かないほうがよいという見本です。


No.17214

Re:逆順のプログラム
投稿者---かなみ(2004/10/10 21:39:04)


><pre>
#include <stdio.h>

void rev(void)
{
int c = getchar();
if (c != '\n') rev(), putchar(c);
}

int main(void)
{
rev(); putchar('\n'); return 0;
}
</pre>こんなプログラムは書かないほうがよいという見本です。

これはどこがよくないのでしょうか?
あと、revっていうのは今まで使ったことがないのですが・・



No.17215

Re:逆順のプログラム
投稿者---ぽこ(2004/10/10 21:50:22)


>これはどこがよくないのでしょうか?
入力が長いと大変なことになるかも知れないからでしょう。

>あと、revっていうのは今まで使ったことがないのですが・・
ユーザ自作関数だから当然でしょう。
むしろ使ったことあったらびっくりです^^;




No.17218

Re:逆順のプログラム
投稿者---hermit(2004/10/11 00:33:46)


>>あと、revっていうのは今まで使ったことがないのですが・・
>ユーザ自作関数だから当然でしょう。
>むしろ使ったことあったらびっくりです^^;

rev じゃなくて strrev なんてのは、昔は普通に有ったんだけど
今は無いのかな・・・・


No.17219

Re:逆順のプログラム
投稿者---ぽこ(2004/10/11 00:46:19)


>rev じゃなくて strrev なんてのは、昔は普通に有ったんだけど
>今は無いのかな・・・・

strrev()とか存在すら知りませんでした^^;
ちょっとGoogleで調べてみました。
下のURLでは標準関数と書いてます。
http://www5c.biglobe.ne.jp/~ecb/c/15_02.html

んが、以下のURLのQ.13には標準ではないとあります。
http://www.st.rim.or.jp/~phinloda/cqa/cqa1.html
ここのホームページの標準関数の欄にもありませんね。
非標準でライブラリが提供したんだけど使用頻度低かったために消えた
関数でしょうか。。