- ベストアンサー
for文を用いて
みなさん、こんにちわ。C言語についてわからないことがありましたので、質問させていただきます。 C言語の本でfor文を用いて1~10までの和を求める例題は数多くありますが、(i=0,i<=10,i++) 1+2+1+2+1+2+… のように二種類のパターンがでてきたときはどのようにfor文で組めばよいのでしょうか?合計とその途中の計算も結果出力したいのですが、わからず困っています。ご教授よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>これで、合計の値はでますが、 出ないと思いますが・・・ やりたいことが完全に理解できてませんが、文章を読む限りこういうことでしょうか? sum=0; printf("%d\n",sum); for(i=1;i<=N;i++){ sum=sum+x; printf(%d\n",sum); sum=sum+y; printf(%d\n",sum); }
その他の回答 (2)
- ency
- ベストアンサー率39% (93/238)
質問とは直接関係ありませんが、ループカウンタベースで 1~N まで足すのであれば、 for ( i = 1; i <= N; i++ ) で良いのでは? ループカウンタ処理は、ループが何回まわるのかに注意して行うようにすると良いですよ。 …というわけで、私の場合は↓こんな感じ↓にします。 for ( i = 1, i <= 10, i++ ) { for ( j = 1, j <= 2, j++ ) { sum += j; } }
補足
回答ありがとうございます。 一番目のfor文でi=1からスタート 二番目のfor文はj=1からスタート 計算は合計=前の合計+j(初期の合計=0として) つまり一回目は1 次にj=2のとき 前の合計=1であるので 今回の合計=1+2=3 となります。これを応用して 各値を求めたいのですが、いまいちわかっておりません。(二重for文ですべての値をprintfを用いて出力させたい) (1)0 (2)0+x (3)0+x+y (4)2x+y (5)2X+2y (6)3x+2y ……… for(i=0;i<=N;i+x){ for(j=0;j<=M ;j+y) sum=sum+j } N,Mは互いに連成するとします。 これで、合計の値はでますが、printf関数はどこで入力すればよいのでしょうか? たびたび、すいませんがご教授お願いします。
- silverbear
- ベストアンサー率25% (163/639)
まぁ、普通にやるとしたら for(i=0,i<=10,i++){ for(j=0,j<=2,j++){ sum=sum+j; }}
補足
回答ありがとうございます。
お礼
ありがとうございました。 大変勉強になりました。