初心者の質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
じゃっく

初心者の質問

#1

投稿記事 by じゃっく » 18年前

おとといから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:初心者の質問

#2

投稿記事 by box » 18年前

> たとえば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文の知識に加えて、
整数の割算と剰余に関する知識が必要です。

box

Re:初心者の質問

#3

投稿記事 by box » 18年前

1から10までfor文でループを回して、

> 1 2 3 4 5 6 7 8 9 0



> 123
> 456
> 789
> 0

という結果を得たい場合は、先ほど回答したのとは
少し違うやり方が必要です。

今回は、
 ・「十二億三千四百五十六万七千八百九十」という数値を扱う
 ・1から10までループを回す
のどちらを採用したいですか?

じゃっく

Re:初心者の質問

#4

投稿記事 by じゃっく » 18年前

明らかに簡単そうな1~10までループでまわすを使いたいです。
できればfor文のちょっとした応用例を添えてくれるとありがたいです

box

Re:初心者の質問

#5

投稿記事 by box » 18年前

> 明らかに簡単そうな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:初心者の質問

#6

投稿記事 by じゃっく » 18年前

返信遅れてすみません

>「ssを1から始めて、10以下である間、1ずつ増やしながらぐるぐる回る」
分かりました。

つまり、for(1;2;3;)

1のところでスタート地点を決めて、
2のところでゴール地点を決めて
3のところでは、ゴールに近づくためのスピードというか、新たなスタート地点の設定みたいな感じでいいですか?

box

Re:初心者の質問

#7

投稿記事 by box » 18年前

さしあたり、そのご理解でよいでしょう。
では、最初の問題

 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" と出力する
という処理を行なうことになります。

ここまではいいですか?

閉鎖

“C言語何でも質問掲示板” へ戻る