C言語で「While 文を使って、1から100までの和を求めて表示するプログラムを作る」ことをやってみました。↓
ですが、forではできたのですが、whileでは動きませんでした。
whileで作る時は、forのどの部分を変えれば出来るんでしょうか?
解説できましたら、お願いします。。
#include <stdio.h>
int main(void)
{
int i,wa;
wa=0;
for(i=1; i<=100; i++)
{
wa=wa+i;
}
printf("和=%d\n",wa);
}
No.2
- 回答日時:
No.5
- 回答日時:
スーツのデザイナーですのでC言語は判りません。
そこで、Javascript を例にした一文を紹介します。
質問者の疑問には、答えているかと思います。
まあ、「プログラミング言語C」のパクリに過ぎません。
素人でも、この本は読んでいますよ!
質問者も一読を!
「表の各行は同じ計算式で計算されるから、出力行ごとに1回繰り返すループを使うのがよい。これが次の while 文の目的である。
while ( fahr <= upper) {
・・・
}
この while ループは次のように働く。まず、カッコ内の条件をテストする。これが真(fahr が upper 以下)であれば、ループの本体が実行される。次に条件が再チェックされ、真であれば、ループ本体が再び実行される。このテストが偽となると、ループは終わりとなりそこで終わりである。」(「プログラミング言語C」12頁)
<script type="text/javascript">
<!--
//
// Javascript: f=0,20,・・・300に対して、摂氏-華氏対応表を出力する
//
var lower = 0; /* 温度表の下限 */
var upper = 300; /* 上限 */
var step = 20; /* きざみ */
fahr = lower;
document.writeln("<pre>");
while ( fahr <= upper) {
celsius = (fahr - 32) * 5/9;
document.write(fahr + "\t" + celsius + "\n");
fahr = fahr + step;
}
document.write("</pre>");
//-->
</script>
「周知のように、プログラムを書くにはいろいろなやり方がある。温度変換プログラムを別の形に書いてみよう。
<script type="text/javascript">
<!--
document.writeln("</pre>");
document.write("\n");
for ( fahr = 0; fahr <= 300; fahr = fahr + 20)
document.write(fahr + "\t" + (5.0 / 9.0) * (fahr ? 32) + "\n");
document.write("</pre>");
-->
</script>
これでも同じ答えが出るが、プログラムは違って見える。大きく改めた点は、変数の多くを除いたことで、fahr を残し、しかもそれを int にしている。上限・下限ときざみの大きさは、for 文の定数としてのみ書いた。この for はそれ自体が新しい構文である。」
「さて、for 自体はループであり、while の一般化になっている。これを前に出てきた while と比較すると、その役割は明白であろう。for にはセミコロンで区切られた三つの部分がある。最初の
fahr = 0
は、ループ本体に入る前に一度だけ実行される。第二の
fahr <= 300
という部分は、ループを制御するテストすなわち条件である。この条件を評価して、これが真であれば、ループの本体が実行される。次に、再初期化のステップ
fahr = fahr + 20
が実行され、先の条件が再び評価される。このループは条件が偽となれば、終りとなる。while と同様に、このループの本体は、一つの文であってもよいし、大カッコにはさまれた一群の文であってもよい。また、初期化と再初期化の部分は、一つの式なら何でも許される」。(「プログラミング言語C」16~17頁)
No.6ベストアンサー
- 回答日時:
がると申します。
んと…
while(i=1; i<=100; i++)
だと、コンパイルでエラーになりません?
for(i=1; i<=100; i++) {
/* 処理 */
}
をwhileで書くと、概ね
i = 1;
while(i <= 100) {
/* 処理 */
i++;
}
という感じになります(厳密には、インクリメントのタイミングが微妙なのですが)。
インクリメントのタイミングを図るのであれば
i = 1;
while(i++ <= 100) {
/* 処理 */
}
という方法もありますね。
i ++
と
++ i
との差異をきちんと認識しないと難しいですが。
まずは、whileの文法をきちんと書籍で確認されることをお勧めいたします。
No.9
- 回答日時:
ちょうどついこの間、for と while と do - whileを人様に教える機会がありました。
その内容を書きます。
まずwhileを教え、forについては、
for( a ; b ; c ){
x
}
whileと同じなんだけど、
ループに入る前に a を1回だけ実行。
ループの中身 x を実行したあと、毎回 c を実行。
b の条件が成り立っている間ずっと繰り返す(これはwhileと一緒)。
と教えました。
そういう風に教わりませんでした?
ちゃんと勉強しましょうよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
break文でループを一気に抜ける...
-
While文の終わりにセミコロンが...
-
ループを途中で抜けたいのですが。
-
C言語に関する質問
-
if文を使わずに奇数・偶数を判断
-
do-while文が禁止される理由
-
PAD図の書き方
-
桁数を求めるプログラム。
-
Cプログラムが終了しない
-
独習C 素数テスタ・・・分から...
-
無限ループ対策
-
Excel VBAで年度をまたぐ期間の...
-
IF文での条件の書き方について(...
-
C言語 キーボードで入力された...
-
整定時間
-
マイナスからプラスへ転じた時...
-
Enterキーを押されたら次の処理...
-
「指定されたキャストは有効で...
-
数字以外が入力されたらエラー...
-
C言語で簡単なパックマンゲーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
break文でループを一気に抜ける...
-
do-while文が禁止される理由
-
ループを途中で抜けたいのですが。
-
入力した数値を倍々するプログラム
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
C言語forループが完結した場合...
-
エクセルでC言語のfor文と同じ...
-
Excel VBAで年度をまたぐ期間の...
-
For文の終了値を関数にしても問...
-
エクセルVBAで Do While (1)って?
-
C言語、whileループを抜け出す...
-
PAD図の書き方
-
Cプログラムが終了しない
-
PIC のプログラムについて ど...
-
他言語で言うcontinue文
-
C言語のプログラムみてください...
-
ループの特定入力終了
-
COBOLのEVALUATE文
-
for文while文の無限ループの違...
おすすめ情報