
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;
}
↑を試してみましたが、全然うまくいきませんでした。
また、入力した数字を出力する方法が分かりません。
詳しく解説していただければ幸いです。
本を読んで実際に内容を改造したりして、いろいろ動かしてみてはいるのですが、実際にこれを作れと言われると慣れないせいかすごく難しく感じます。
これも、なんかコツがあればついでによろしく
お願いします。
No.1ベストアンサー
- 回答日時:
幾つかおかしなところを。
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が入力される度にどんどんと増えていってしまいます。
ざっと見た所、このくらいでしょうか。
丸々答えを載せてしまう事もできますが、それでは為にならないのでこんな感じで。
頑張ってください。
No.5
- 回答日時:
作りました。
どうしても分からないときは
http://math.xxxxxxxx.jp/%83f%81%5B%83%5E%8C%F0%8 …
此れが答えです。
但し、自分で考えることをお勧めします。
No.4
- 回答日時:
独学でがんばっておられるようなのでヒントを2つほど。
1.) 問題がいくつかあるため、一箇所を直して動くものでもありません。
2.) do while という制御文を勉強してみましょう。内側のループは for も有用です。
コツは、やはり読んで改造することです。いきなり好きなようにコードを書ける人などおりません。
たくさんのコード、言語を読んでください。そして改造して、自分の流儀を探していってください。
プログラミングは根気がとても重要な作業です。がんばってくださいね。
No.2
- 回答日時:
現状では、数字を入力しても"終了"が表示されて終わり・・ですよね?たぶん。
後半の部分だけ書きます。
~
printf("終了\n");
}
printf("合計は%dです\n",sum);
} //print文を最初のWhileループの中に入れる
return 0;
}
のように、printfとその↑の}を入れ替えて、print文を最初のWhileループの中に入れてみてはどうでしょう?
これでうまくうごけばいいのですが・・。残念ながらいま手元にCの動く環境がないので頭の中で実行してるだけです。。すいません。
でも、"何回も繰り返すプログラム"の作り方としてWhileを使用するのは常套手段だと思います。
なかなかよいのではないでしょうか?
私はいまPerlの独習をしていて、同じようにロジックにハマって苦労してますが、やはりプログラミングは習うより慣れろ、だと思います。
数多く作っていけば、おのずと自然なコードが書けるようになると思います。
お互いがんばりましょう。
p.s.動かなかったらごめんなさいです。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
for文の中にswitch文はいれられ...
-
#if 1 #elseの意味について
-
C言語の二分法のプログラムにつ...
-
C言語階乗の総和を求める
-
C言語で電卓を作成する。
-
直角三角形を表示するプログラム
-
SIGALRMでプロセス終了
-
和を求める問題
-
全角文字の判定
-
while文について、c言語...
-
C言語 数字以外を入力させない...
-
配列を関数に渡す方法
-
Aの値からBの値を除するとは??
-
複数桁10進数の*桁目だけを抽出...
-
「Aに対するBの割合」と「Aに対...
-
Enterキーを押されたら次の処理...
-
エクセルで可視セルにのみ値貼...
-
10個出力で改行したいのですが...
-
main.c:7:43: warning: implici...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#if 1 #elseの意味について
-
構文エラー";"が型の前にあり...
-
for文の中にswitch文はいれられ...
-
配列を使って魔方陣
-
配列を関数に渡す方法
-
プログラム
-
C言語 マスターマインドゲーム...
-
プログラミングで二番目に大き...
-
初心者です。for文、if文を使っ...
-
scanfが実行されません
-
C言語 数字以外を入力させない...
-
C言語プログラムが理解できなくて…
-
C言語の二分法のプログラムにつ...
-
C言語階乗の総和を求める
-
C言語のwhileループについて
-
for文を使用して値を代入したい...
-
while文を使った問題なのですが...
-
for文の条件式について
-
直角三角形を表示するプログラム
-
C言語 エラー表示 break の位...
おすすめ情報