• 締切済み

おしえてください5

main関数内でchar型の変数word[20]を宣言し,scanfを用いて文字列を入力する. 再帰呼び出しでword内の文字列を逆順に表示する関数call_nextを作製し, 入力した文字列を逆順に表示せよ. ※グローバル変数は用いないこと.グローバル変数を用いた場合は0点とする. ※通常scanfではスペースは読み込めないが  scanf(" %[^\n]", str);  とすることで,スペースも読み込みができる. <実行結果例1> Input word(20). -> society society yteicos <実行結果> Input word(20). -> RATS & STAR RATS & STAR RATS & STAR

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.3

#4です。訂正 |C++のSTLを使う場合は#1に例がありますね #3でした。

全文を見る
すると、全ての回答が全文表示されます。
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

文字列を逆にする関数はstrrevですね C++のSTLを使う場合は#1に例がありますね ※ここは宿題を解いてもらう場ではありません  自分で学ぼうとする意欲が見られない質問は、所詮適当な回答しかつきませんよ?

全文を見る
すると、全ての回答が全文表示されます。
  • Quant
  • ベストアンサー率18% (23/122)
回答No.1

#include <iostream> #include <fstream> #include <string> #include <algorithm> using namespace std; int main() { ifstream ifs(stdin); string word; cout << "Input word(20)." << endl << "-> "; getline(ifs,word); cout << endl << word << endl; reverse(word.begin(),word.end()); cout << word << endl; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • おしえてください4

    入力した単語の長さを求めるプログラムを作成せよ。 ただし、strlen関数の使用は禁止とする。 文字数を数える時にはポインタを使用すること。 (word[i]などとし、文字列の終端になるまでiを増やすという数え方をしてはいけない。) <実行結果> 単語を入力してください。 society 文字列の長さは7です。

  • fgets関数とscanfについて

    fgets関数とscanfの意味が似ていると思うんですが、違いは何ですか? 例えば、fgets( str, 81, stdin ) は変数strに80文字制限で、標準入力から入力するという意味ですよね? scanf("%s",s)は変数sに文字列を入力するという意味ですよね? 意味が似てると思うんですが、実際は何が違うんでしょうか? 回答よろしくお願いします。

  • C言語

    (a) キーボードから入力された文字列をそのままディスプレイに表示するプログラムを作成しなさい。 という問題 #include<stdio.h> main() { char word[1000]; /*文字型の変数の宣言*/ scanf("%s", word); /*キーボードから文字列を入力*/ printf("%s\n", word); /*入力した文字列を出力*/ } と作りましたがこれではコンソール中で文字を打ってからエンターを押さないといけないからといわれ再提出になってしまいました。 エンターを押さないでそのまま出力するということは、できるのでしょうか? あと自分の作ったプログラムではスペースや改行を使うことができないから使えるようにしろと言われてましたがそれわできますか? 変換仕様をかえればいいのですか ほかにもかえる所はありますか?

  • 初歩的なプログラムなんですが・・・

    まだ勉強始めたばっかりで色々ネットのページも調べてみたんですがどうしてもわからないのでどなたか教えてもらえませんか?? scanf()関数を用いて同じ長さの文字列を2つ入力して、この2つの文字列が同じ文字列ならば、 「等しい文字列を入力」と画面表示して、異なるならば「異なる文字列を入力」と画面表示したいんですが^^; 実行結果は 同じ長さの文字列を2つ入力しなさい abcde abcde 等しい文字列を入力 のような結果がほしいんです。 どなたかお願いします^^;

  • C言語のプログラミングについてです。

    C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm

  • 文字列のプログラムについて

    キーボードから入力された1行の文字列を逆順(abc -> cba)にして、 更に大文字なら小文字にし、小文字なら大文字にして表示するプログラムを作る問題です。 とりあえず getcharを使い、キーボードから文字列を入力しその文字列を 配列変数に保存し、その配列変数について変換させるのだと思いますが、 どうしてもgetcharでキーボードからえた文字列を配列変数にいれる方法がわかりません。 教えてください。

  • このプログラムどうやったら??

    引数として受け取った文字列を逆順にした文字列に変換する関数なんですけども、全くわかりません。教えていただけませんか?? つまりは、キーボードから入力した文字列を逆順に表示させるってことなので、 void str_reverse(char src[]) を使えばいいのかと思うのですが、、、 Osaka Dome→emoD akasO みたいな感じなんですけれども。。。 お願いします!

  • ■ ループ動作について ■

    以下のプログラムを実行したところ、下記の実行結果が出力されました。 入力:ABC 123 XYZ 567 ABC 123 XYZ 567 ここでの「%s」の書式では、空白文字は文字列として読み込まれません。 そのため変数「moji」には、「ABC\0」が入るかと思います。 実際の動作ではscanf関数が実行された後、for関数が初めに入力した空白で区切られた単語数分、再度繰り返され、putchar関数で改行を出力しています。 この動作がよく理解できませんでした。 一つしかない変数「moji」をどのように利用して出力しているのでしょうか? 細かな動作手順を教えていただける方、よろしくお願いいたします。 void main(void) { char moji[10]; int i; printf("入力:"); while(1) { scanf("%s", moji); for(i = 0; moji[i]; i++) { putchar(moji[i]); } putchar('\n'); } }

  • プログラミング ポインタを使った文字列比較

    プログラミング ポインタを使った文字列比較 2つの文字列str1, str2を入力し,それらが等しければ0,等しくなければ1を返す関数str_compareを作り、返り値によって以下のように表示するプログラムを作れ。ただし,関数strcmpを使ってはならない。 文字列の入出力はmain関数で行い,関数str_compareの仮引数にはポインタ変数を宣言し,ポインタと間接演算子*を用いた処理を行うこと。 % ./a.out input str1 = Worldcup input str2 = Worldcup same strings % ./a.out input str1 = World input str2 = cup different strings この問題に私は次のようにプログラミングしました。 #include <stdio.h> #define MAX 100 int str_compare(char *, char *); main() { char str1[MAX], str2[MAX]; printf("input str1 = %s", str1); scanf("%s", str1); printf("input str2 = %s", str2); scanf("%s", str2); str_compare(str1, str2); if (str_compare(str1, str2) == 0) printf("same strings\n"); else if (str_compare(str1, str2) == 1) printf("different strings\n"); } int str_compare(char *s1, char *s2) { int i; for (i = 0; s1[i] != '\0'; i++) { if (s1[i] != s2[i]) { break; } } if (s1[i] == s2[i]) { return 0; } else { return 1; } } これで実行したところ、「input str1 =」の右のスペースが文字化け?してしまいます。(半角カタカナや記号が出る)ただ、その後に文字列を入力すると、正しく機能します。 これは何が悪いなのでしょうか、どなたか教えてください。

  • やってみてください

    文字列を入力させ、入力した文字列の長さを出力させるプログラムを作成せよ。 if switch for while do-while 配列 をなるべく使う。 <実行結果> 文字列を入力してください society Length of "society" is 7