プログラミングC : 投稿 6 – Cでのループ
1. 例えば、開口部
プリントアウトあなたの名前それほど単純ではありません. 書かれた非常に簡単なプログラム.
#include <stdio.h> int main() { printf("Nguyen Van Quan\n"); return 0; }
OK. だから今、私はあなたがプリントアウトしたいです 10 回あなたの名前?
#include <stdio.h> int main() { printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); printf("Nguyen Van Quan\n"); return 0; }
非常にシンプル, ただコピー 10 printfのラインが終了します. しかし、そうでない場合は 10, すなわち 1000 以上の? もちろんコピーは現実的ではありません.
実際、, ソフトウェアは、上記の例のように何度も繰り返される作業になります. またはあなたのソフトウェアのような従業員のリストを印刷します, すべての従業員情報 (コンテンツ) 異なるが、構造は非常に似ています. または単にあなたは、Facebookをサーフィンして話を友人から見ること, ニュースは、同じ内容のではなかったが、構造が非常に似ています.
繰り返しは、そのような必要なタスクを達成するために、, 私たちは、からなるループ構造を使用します。 のために, 同時に, 一方を行います. このレッスンで私たちはループを学びます のために.
私たちは例を改定します 10 一度は、次のように命名します:
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { printf("Nguyen Van Quan\n"); } return 0; }
上記のコードとして, 私が使用しました ループ 彼の名前で仕事をします 10 時間, とともに 1000 私もいくつかを取り替え簡単な回 10 番号 1000 (あなたが試すことができます). コードを見て、あなたはまた、私たちが基本的な事柄を視覚化することができます.
2. ループ構造
私たちはループ構文を持っており、それがどのように動作するかを見る上の写真を見てみると、かなり明瞭で理解し易いです. しかし、あなたは注意する必要があります:
- 無セミコロンのためのコマンドの後.
- 3 セミコロンで区切られたループの表現 (;), 表現は、存在しなくてもよい 1,2 または両方 3 これは、セミコロンを調達する必要があります.
- 式 1 のためにダイヤルする場合、必ず一度だけ計算される.
- 式 2, 3 繰り返し可能な親族のために.
- 式 1, 2, 3 セミコロンで区切る必要があります ( ; ), 表現は、存在しなくてもよい 1,2 または両方 3 これは、セミコロンを調達する必要があります.
- 表現の場合 2 いいえ, ループは常に正しいと考えられている. 休憩を取るために、ループを脱出したい, 後藤HOACリターン.
- 各発現のためにカンマで区切られた人間の一連の式のように書くことができる。. 左から右へ、子式を決定される. シーケンス最初の式の式の善悪のように 2 最後の式によって決定される.
- 体内に (blockコマンド) 一つ以上の他の制御構造を含んでいてもよい, 別のループ.
- break文を持つ場合には, 最も深いループ構造は終了します.
- そこthedung後藤体内に目的の場所にループを終了.
- 体内では、特定の機能に戻るにはリターンのために使用することができます.
- 体内では、ループの先頭に移動し続けるコマンドで使用することができます (体内での残りのステートメントをスキップ).
リターンコードの例:
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { printf("Nguyen Van Quan\n"); } return 0; }
プロセスは次のように動作します:
- ステップ 1: 式を実行します 1 つまり、私は=割り当て 1.
- ステップ 2: 式を実行します 2 つまり、私を確認します <= 10 しない. 私は=ですか 1 万一この右=>実行コマンドブロックに印刷されている名前.
- ステップ 3: 式を実行します 3 私までの増加すなわち 1 ユニット. 今私= 2.
- ステップ 4: 戻る表現 2. 私をチェック < 10 しない. 私は=ですか 2 べきまだ正しい=>実行コマンドブロック, 名前にすなわち.
- ステップ 5: 式を実行します 3 つまり、私を上げます 1. 今私= 3.
- ステップ 6. バック式2、…
- ステップ….
- 工程X: 式を実行します 3, 私は増加します 1. 今私= 10.
- ステップのx + 1: 戻る表現 2 つまり、私を確認します <= 10. 真=>実行コマンドブロックプリント名のまま.
- ステップX + 2: 式を実行します 3, 私は増加します 1. 今私= 11.
- ステップX + 3: 戻る表現 2, 私をチェック <= 10. 今、それは間違って私がいたので、 11 =>終了ループ. 次のピア・コマンド・ループを実行します (return文 0 下に).
OK. 今、あなたは、ループの基本的な理解を持っています. さらにいくつかの例をし続けます.
例 1:
プリントアウトするプログラムを書きます 15 回あなたの名前, 一緒に次の順序で:
- グエン·ヴァン·泉
- グエン·ヴァン·泉
- グエン·ヴァン·泉
- ….
ハム… 数の上昇を導出する方法? あなたは、forループのステップを実行するプロセスを見ることができます? 我々は持っています 1 私は昇順をオンにします… だから我々はそれを利用します.
#include <stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { printf("%d.Nguyen Van Quan\n", i); } return 0; }
例 2:
でもから正の数をプリントアウトしてください。 1 へ 20 トップ 1 現在, スペースで区切っ.
ちょうど私がから実行するための 1 へ 20 私たちは、印刷された数が偶数であるチェックします. パリティをチェックするには, 私たちは、部門がバランスを取っリコール. 私は分裂した場合 2 残りの 0 さえしなければなりません.
#include <stdio.h> int main() { int i; for (i = 1; i <= 20; i++) { if( i % 2 == 0) { printf("%d ", i); } } return 0; }
OK. しかし、私はあなたが見下ろし前にもう少し考えたいとコードヒント. 偶数まだこの記事に行う場合はどのようにテストを使用することができませんでした?
固定されていないための表現を覚えておいてください, 我々はそれを変更することができます. そして、道の増加Iを変更. 私たちは、私が開始与えます 2 それぞれ増加し、上昇 2 ユニット.
#include <stdio.h> int main() { int i; for (i = 2; i <= 20; i = i + 2) { printf("%d ", i); } return 0; }
前のタイムコードよりも明らかに優れてこのコード. 私たちは、私を高める上で 2 指令部 I = I + 2.
これは、割り当てiは + 2 私のために, 私と私はコマンドは比較になりません + 2.
例 3:
から合計偶数の整数 1 へ 20.
#include <stdio.h> int main() { int i; int s = 0; for (i = 2; i <= 20; i = i + 2) { s = s + i; } printf("S = %d\n", s); return 0; }
上記のコードでのお知らせ, 我々は宣言する 1 変数s (合計は、スタンド) 合計保存します. 私が増加すると、我々はSコマンドに計上するたびに S = Sで + で.
例 4:
奇数の合計から 1 へ 20 しかし合計が超えるまで 15 その後、停止.
ここでは、奇数を合計しています, 偶数番号のようなだけ, しかし合計がより大きい場合 15 その後、我々は停止します, プラスもうありません.
#include <stdio.h> int main() { int i; int s = 0; for (i = 1; i <= 20; i = i + 2) { if(s <= 15) { s = s + i; } } printf("S = %d\n", s); return 0; }
sがまだ以下のときだけでチェック 15 その後、我々は追加しました. 私たちは、= Sを持っています 1 + 3 + 5 + 7 = 16.
しかし、あなたが気づいた場合, ときS> 15, 我々はまだ私まで、実行中のループのそれに追加されません> 20. これは、反復に実行しようとしているI = 9, 11, 13, 15, 17, 19. したがって、それは無駄になります, 余分やプログラムが長く走らせます. だから我々は、コマンドが実行された時点でループを壊す必要があるとき、私= 7. そのように使用することができます行うには、 ブレーク, または 後藤, しかし、あなたは、シンプルさと安全のためにお勧めしますブレークを使用する必要があります.
#include <stdio.h> int main() { int i; int s = 0; for (i = 1; i <= 20; i = i + 2) { if(s <= 15) { s = s + i; } else { break; } } printf("S = %d\n", s); return 0; }
例 5
整数nを入力します。, 偶数の合計が入力されました.
#include <stdio.h> int main() { int i, n, x; int s = 0; printf("Enter n = "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("Enter number %d : ", i); scanf("%d", &x); if(x % 2 != 0) continue; s = s + x; } printf("S = %d\n", s); return 0; }
この例では, 私はどのようにコマンドを使用する方法を指示します 続ける. このコマンドは、資本のエフェクトループをエスケープしませんが、式に戻っています 3 その背後に注文なし. xがさえコマンドを入力していない。ここならば右の私を高めるために実行し、増分コマンドSをスキップ.
エクササイズ:
- 番号をプリントアウトするプログラムを書いて、n及びnは数と推定されています.
- テストプログラムを書きます 1 素数はありません? 素数は正の整数であります 2 条約はあります 1 それ自体. 例えば号 2, 3, 5, …
- テストプログラムを書きます 1 完全数が存在していないです? 完全数は正の整数推定の等しい合計であります 2 回それを. の例 6 コンベンション 1, 2, 3, 6 総 1 + 2 + 3 + 6 = 12 (等しい 2 時間 6).
- = Sを計算するプログラムを書きます 1 + 1/2 + 1/3 + … + 1/N
- から奇数の二乗を計算するプログラムを書きます 1 nに.
- Nを計算するプログラムを書きます! nは知っています! = 1.2.3.4…N
- シーケンスF知られているフィボナッチ数列のn番目をカウントするプログラムを作成(N) = F(-1) + F(N-2), N> 2 とf(1) = 1, F(2) = 1.
- 長さでプログラムを書きます, 矩形の幅. 長方形のアスタリスクを描きます (*) サイズ入力されました.
私は私の間違いを指摘KOを支援するために、間違ったあなたまで私のコードを投稿することができます?
何かが通信する必要がある場合, あなたはfb.com/nguyenvanquan7826を経由して私に連絡します, 彼のブログでこれは最近ではない、常に上のために遅くなりますチェック.
{
int型の私, OK;
scanf関数(“%D”, &で);
//printfの(“%D”, 1%2);
もし(私== 1)
printfの(“%D・ラ・グエンてます nします”, で);
ほかに{
のために(int型のx = 2; X<で;X ++){
もし(私%のx == 0){
printfの("So %d khong la so nguyen to\n",で);
ブレーク;
}
OK = 1;
}
もし([OK] == 1)
printfの("So %d la so nguyen to\n",で);
}
リターン 0;
}
あなたの訪問 https://code.cachhoc.net NHE提出します.
ウェイター, あなたがそれらに与えるエクササイズのいくつかは互いに同じですか?, なぜ少し難しいと思いますか, 私は学校が初めてなのであまり知りません
いいね. ファイティング. 詳細については、ここをクリックしてください: https://chamcode.net/
#含まれる
メインint型()
{
int型のn,で;
printfの(“番号を入力してください:\N”);
scanf関数(“%D”,&N);
のために(i = 1から;で<N;私 )
もし(n%i == 0){
printfの("Uoc so cua n la:%d\n",で);
}
リターン 0;
}
#含まれる
メインint型()
{
int型のn,で;
printfの(“入る 1 だからグエンn:\トン”);
scanf関数(“%D”,&N);
printfの(“\n ========== n”);
もし(n == 1)
printfの(“%d la so nguyen to”,N);
それ以外の場合(n == 2)
printfの(“%d la so nguyen to”,N);
ほかに{
のために(I = 2;で<N;私 )
もし(n%i == 0){
printfの("%d khong phai la so nguyen to\n",N);
ブレーク;}
それ以外の場合(n%i!= 0){
printfの("%d la so nguyen to\n",N);
ブレーク;}
}
リターン 0;
}
完璧なデジタルショー
メインint型()
{
int型A;
int型S = 1;
printfの(“インポート: “);
scanf関数(“%D”,&ザ·);
のために (私は2 = int型;で<= A;私 ){
もし(!(a%i)){
printfの ("%d la uoc \n",で);
s = s + i;}
もし (s == a + a){ブレーク;}}
printfの("%d la so hoan hao",ザ·);
リターン 0;
}
あなたは入ることができます https://chamcode.net NHE提出します.
かわいい, i ++の部分は何ですか?, 私はまだその部分を理解していません
i ++はiをに増やすことです 1 ユニット.
(!(a%i))
わからない〜今 `
iを除算して別の余りを得る場合 0 NHE.
例えば蜂蜜 4 とはいえ、合計が大きい場合 15 それからそれが来るのをやめなさい 16 そう . 数を落とすべきだった 7 行こう
もし(X % 2 != 0) 続ける; 私に聞いてみましょう ! ここではどういう意味ですか? ?
xがで割り切れる場合 2 次に、次のコマンドを実行せずに、次回ループの実行に戻ります。.
こんにちは. チェックしたい 1 素数が終わった後、私は行を続けます:Y / N続行するにはYを選択し、次にNを選択してから、どのように入力するかを終了する必要があります。その部分を手伝ってくれませんか。
あなたが追加します 1 通常の文字入力として入力, 彼らが入った後, その文字とYおよびNを比較します.