アプリ版:「スタンプのみでお礼する」機能のリリースについて

下に示すように、123456を繰り返し表示するプログラムを作成せよ。なお、表示する数字は、読み込まれた整数の個数とする。

整数を入力してください:25「Enter]
1234567890123456789012345

上の問題を自分で考えてみたのですが。分かりませんでした。for文を使って作成してほしいです。。プログラムを打つのは大変ですので、考え方だけでもいいのでどうかよろしくお願いします。

A 回答 (5件)

1.まず、25と入力されて、固定文字(例えば0)を25回表示するプログラムを作る。


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

#include <stdio.h>



int main(void)
{
int i, j;

scanf("%d", &j);
for(i = 1; i <= j; i ++) putchar('0' + (i % 10));
return 0;
}
    • good
    • 0

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 さんの意図はちょっとわかりかねますけど。。。
    • good
    • 0

考え方だけでなく,答えを書いて申し訳ないですが,


解くだけなら,こんな感じで簡単にできますね.


//---------------------------------------------------
#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;
}
    • good
    • 0

1文字目:'1'を出力


2文字目:'2'を出力
...
9文字目:'9'を出力
10文字目:'0'を出力
11文字目:'1'を出力
12文字目:'2'を出力
...
23文字目:'3'を出力
24文字目:'4'を出力
25文字目:'5'を出力

上記から、「何文字目を出力するか」と「実際に出力する文字」との
間の法則を見つけてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!