おとといから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文の使い方、サンプルを詳しくお願いします。
初心者の質問
-
box
Re:初心者の質問
> たとえば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文の知識に加えて、
整数の割算と剰余に関する知識が必要です。
>
> 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文の知識に加えて、
整数の割算と剰余に関する知識が必要です。
-
box
Re:初心者の質問
> 明らかに簡単そうな1~10までループでまわすを使いたいです。
そうですね。それでいきましょう。
まずは、ここまで。
for文の意味は、
「ssを1から始めて、10以下である間、1ずつ増やしながらぐるぐる回る」です。
for文で構成するループの中身は、今はまだ何もありません。これから作っていきます。
ここまではいいですか?
そうですね。それでいきましょう。
まずは、ここまで。
#include <stdio.h>
int main(void)
{
int ss;
for (ss = 1; ss <= 10; ss++) {
/* 何かの処理 */
}
return 0;
}
このプログラムは、単に10回ループを回して終わり、というものです。for文の意味は、
「ssを1から始めて、10以下である間、1ずつ増やしながらぐるぐる回る」です。
for文で構成するループの中身は、今はまだ何もありません。これから作っていきます。
ここまではいいですか?
-
box
Re:初心者の質問
さしあたり、そのご理解でよいでしょう。
では、最初の問題
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" と出力する
という処理を行なうことになります。
ここまではいいですか?
では、最初の問題
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" と出力する
という処理を行なうことになります。
ここまではいいですか?