• ベストアンサー

柴田望洋さんの著書の新版明解C言語入門編の演習4-13

下に示すように、123456を繰り返し表示するプログラムを作成せよ。なお、表示する数字は、読み込まれた整数の個数とする。 整数を入力してください:25「Enter] 1234567890123456789012345 上の問題を自分で考えてみたのですが。分かりませんでした。for文を使って作成してほしいです。。プログラムを打つのは大変ですので、考え方だけでもいいのでどうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

1.まず、25と入力されて、固定文字(例えば0)を25回表示するプログラムを作る。 2.それが、できたら、固定文字を次々と増加させるようにする。 int x=0としてprintf("%d",x);を実行すると、"0"が表示される。 次回は、1増やせばよいから、x++;を実行する。 但し、xが10の時は、x=0;を実行し、xを0に戻す。 以上で、どうでしょうか。

その他の回答 (4)

回答No.5

#include <stdio.h> int main(void) { int i, j; scanf("%d", &j); for(i = 1; i <= j; i ++) putchar('0' + (i % 10)); return 0; }

  • ency
  • ベストアンサー率39% (93/238)
回答No.4

ANo1さんの回答も、ANo3さんの回答もどちらでもできますね。 どちらも、ANo2さんのおっしゃっている法則から導き出された答えのひとつです。 あと、↓こんな方法↓もあるでしょうか。 /*-------------------------------------- n は入力した整数とする。 --------------------------------------*/ int n; int i, j; /* 途中省略 */ for( i=1, j=1; i<=n; i++, j++ ) { if ( j >= 10 ) { j -= 10; } print( "%d", j ); } …あまり、素直なやり方じゃないですね。 わかりやすいのは、ANo1さんのやり方でしょう。 シンプルなのは、ANo3さんのやり方でしょう。 # C言語の入門書で勉強中の質問者さんに、C++ のコードを書いて「答え」といっている # ANo3 さんの意図はちょっとわかりかねますけど。。。

  • WizTaka
  • ベストアンサー率53% (7/13)
回答No.3

考え方だけでなく,答えを書いて申し訳ないですが, 解くだけなら,こんな感じで簡単にできますね. //--------------------------------------------------- #include <sstream> #include <iostream> using namespace std; int main() { cout << "整数を入力して下さい : "; int digit; cin >> digit; ostringstream ossOutput; for(int i = 1; i <= digit; i++) { ossOutput << i % 10; } cout << "Answer : " << ossOutput.str() << "\n\n"; return 0; }

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

1文字目:'1'を出力 2文字目:'2'を出力 ... 9文字目:'9'を出力 10文字目:'0'を出力 11文字目:'1'を出力 12文字目:'2'を出力 ... 23文字目:'3'を出力 24文字目:'4'を出力 25文字目:'5'を出力 上記から、「何文字目を出力するか」と「実際に出力する文字」との 間の法則を見つけてください。

関連するQ&A