重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

C言語初心者です・・・。

(1)正の整数値nを読み込んで、1からnまでの和sumを
求めて出力するmain関数を作成して実行。

(2)(1)で作ったプログラムを、異なるnの値を入力して
何回も繰り返すプログラムに変更して実行。
ただし、0または負のnの値が入力されたら、終了。
(入力された数字は出力する)

(1)は本を読んで分かりました。
(2)が分かりません。
#include<stdio.h>

int main(void)
{
int i = 1,n,sum = 0;

while( n > 0 )
{
printf("整数を入力 ");
scanf("%d",&n);
while( i <= n )
{
sum += i;
i++;
}
if( n <= 0 )
{
printf("終了\n");
}
}

printf("合計は%dです\n",sum);

return 0;
}

↑を試してみましたが、全然うまくいきませんでした。
また、入力した数字を出力する方法が分かりません。
詳しく解説していただければ幸いです。

本を読んで実際に内容を改造したりして、いろいろ動かしてみてはいるのですが、実際にこれを作れと言われると慣れないせいかすごく難しく感じます。
これも、なんかコツがあればついでによろしく
お願いします。

A 回答 (6件)

幾つかおかしなところを。



1)
while( n > 0 ) ←※1
{
printf("整数を入力 ");
scanf("%d",&n); ←※2
while( i <= n )
{

}
}
繰り返しの判定を※1でしているのに、判定する為のnをそれよりも後の※2で取っています。
さらに、最初に※1に来るまでにnが初期化されていません。

2)
合計はnを入力する毎に出すのが正解だと思われますが、
その場合には
printf("合計は%dです\n",sum);
は繰り返し(↑の※1)の中に居る必要があります。

3)
sumが途中で初期化されないので、nが入力される度にどんどんと増えていってしまいます。


ざっと見た所、このくらいでしょうか。
丸々答えを載せてしまう事もできますが、それでは為にならないのでこんな感じで。
頑張ってください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
また何かありましたらお願いします。

お礼日時:2006/04/29 09:26

何故か下のURIだとアクセスできないので


http://math.xxxxxxxx.jp/test.c
を見てください。
    • good
    • 0

作りました。



どうしても分からないときは
http://math.xxxxxxxx.jp/%83f%81%5B%83%5E%8C%F0%8 …
此れが答えです。
但し、自分で考えることをお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきますね。

お礼日時:2006/04/29 09:30

独学でがんばっておられるようなのでヒントを2つほど。



1.) 問題がいくつかあるため、一箇所を直して動くものでもありません。
2.) do while という制御文を勉強してみましょう。内側のループは for も有用です。

コツは、やはり読んで改造することです。いきなり好きなようにコードを書ける人などおりません。
たくさんのコード、言語を読んでください。そして改造して、自分の流儀を探していってください。
プログラミングは根気がとても重要な作業です。がんばってくださいね。
    • good
    • 0
この回答へのお礼

ありがとうございます、
頑張ります!!

お礼日時:2006/04/29 09:29

追記で。



4)
良く見たらiも途中で初期化されてませんね。
これでは前回の続きからしか動かないでしょう。
    • good
    • 0

現状では、数字を入力しても"終了"が表示されて終わり・・ですよね?たぶん。




後半の部分だけ書きます。

printf("終了\n");
}

printf("合計は%dです\n",sum);
} //print文を最初のWhileループの中に入れる

return 0;
}

のように、printfとその↑の}を入れ替えて、print文を最初のWhileループの中に入れてみてはどうでしょう?

これでうまくうごけばいいのですが・・。残念ながらいま手元にCの動く環境がないので頭の中で実行してるだけです。。すいません。

でも、"何回も繰り返すプログラム"の作り方としてWhileを使用するのは常套手段だと思います。
なかなかよいのではないでしょうか?

私はいまPerlの独習をしていて、同じようにロジックにハマって苦労してますが、やはりプログラミングは習うより慣れろ、だと思います。

数多く作っていけば、おのずと自然なコードが書けるようになると思います。

お互いがんばりましょう。

p.s.動かなかったらごめんなさいです。。
    • good
    • 0
この回答へのお礼

ありがとうございます。
これからも、勉強を続けていこうと思います。

お礼日時:2006/04/29 09:28

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