ページ 1 / 1
初心者の質問
Posted: 2007年10月08日(月) 00:24
by じゃっく
おとといからC言語に手をつけ始めました。
特に、他の言語をしたということもなく、初めての言語がC言語です。
本題に入ります。
たとえば10桁(1234567890)の数字があったとします。
int ss;
printf("%3d", ss);
とすると、だいたい
1 2 3 4 5 6 7 8 9 0
という感じになるのは分かるんです。
しかし、これを
123
456
789
0
のように3桁出力して、改行という風にするには
どのようにすればいいのでしょうか?
たぶんfor文を使うのだと思うのですが。
for文の使い方は僕の買った本では、
for(初期化;継続条件;再設定)
という風にしか書いてなくて、サンプルがなくてよくわかりません。
質問する側の態度として、厚かましいかもしれませんが
理解したいので、できるだけfor文の使い方、サンプルを詳しくお願いします。
Re:初心者の質問
Posted: 2007年10月08日(月) 00:52
by box
> たとえば10桁(1234567890)の数字があったとします。
>
> int ss;
このとき、ssというint型の変数に、
「十二億三千四百五十六万七千八百九十」という値が入っていることを
想定されていますか?
もしそうだとすると、
> printf("%3d", ss);
>
> とすると、だいたい
> 1 2 3 4 5 6 7 8 9 0
このようには出力しません。
1234567890
と出力します。
"%3d"は、今回の場合ssというint型の変数を出力するために、最低3桁使う、
という意味です。
> 123
> 456
> 789
> 0
>
> のように3桁出力して、改行という風にするには
> どのようにすればいいのでしょうか?
もし、「十二億三千四百五十六万七千八百九十」という数値をもとにして
この出力を得ようとすると、for文の知識に加えて、
整数の割算と剰余に関する知識が必要です。
Re:初心者の質問
Posted: 2007年10月08日(月) 00:58
by box
1から10までfor文でループを回して、
> 1 2 3 4 5 6 7 8 9 0
や
> 123
> 456
> 789
> 0
という結果を得たい場合は、先ほど回答したのとは
少し違うやり方が必要です。
今回は、
・「十二億三千四百五十六万七千八百九十」という数値を扱う
・1から10までループを回す
のどちらを採用したいですか?
Re:初心者の質問
Posted: 2007年10月08日(月) 05:10
by じゃっく
明らかに簡単そうな1~10までループでまわすを使いたいです。
できればfor文のちょっとした応用例を添えてくれるとありがたいです
Re:初心者の質問
Posted: 2007年10月08日(月) 07:22
by box
> 明らかに簡単そうな1~10までループでまわすを使いたいです。
そうですね。それでいきましょう。
まずは、ここまで。
#include <stdio.h>
int main(void)
{
int ss;
for (ss = 1; ss <= 10; ss++) {
/* 何かの処理 */
}
return 0;
}
このプログラムは、単に10回ループを回して終わり、というものです。
for文の意味は、
「ssを1から始めて、10以下である間、1ずつ増やしながらぐるぐる回る」です。
for文で構成するループの中身は、今はまだ何もありません。これから作っていきます。
ここまではいいですか?
Re:初心者の質問
Posted: 2007年10月08日(月) 22:57
by じゃっく
返信遅れてすみません
>「ssを1から始めて、10以下である間、1ずつ増やしながらぐるぐる回る」
分かりました。
つまり、for(1;2;3;)
1のところでスタート地点を決めて、
2のところでゴール地点を決めて
3のところでは、ゴールに近づくためのスピードというか、新たなスタート地点の設定みたいな感じでいいですか?
Re:初心者の質問
Posted: 2007年10月09日(火) 09:47
by box
さしあたり、そのご理解でよいでしょう。
では、最初の問題
1 2 3 4 5 6 7 8 9 0
の出力に取りかかります。
10/08の07:22に私が投稿したコードのfor文の中に
/* 何かの処理 */
というコメント部分があります。
その部分を、
1 2 3 4 5 6 7 8 9 0
を出力するための文で置き換えます。
変数ssを1から10まで1ずつ増やしていく中で、
くだんの出力結果を得るには、
・ssが1のとき、" 1" と出力する
・ssが2のとき、" 2" と出力する
・ssが3のとき、" 3" と出力する
・以下同様に、
・ssが9のとき、" 9" と出力する
・ssが10のとき、" 0" と出力する
という処理を行なうことになります。
ここまではいいですか?