電車を通る情報オリンピック ----- ループ、ネストされたループ

C++のループにもforループやwhileループなどたくさんの種類がありますが、以下ではこれら2つのループの機能と使い方を紹介します。

1.forループ

for ループとは何ですか?

for ループは一般的なプログラミング言語のループ文であり、このループ文はループ本体とループ条件で構成されており、式を簡単にまとめると、 for (初期変数の定義、ループ条件、変数の変更) となります。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n=5, sum=0;
    for(int i=1;i<=n;i++)
    {
        sum++;
    }
    cout<<sum<<endl;
    return 0;
}

出力結果:5

2. while ループ

whileループ ステートメントは、括弧内に指定された条件が true である限り、 ターゲット ステートメントを繰り返し実行します。

#include <iostream>
using namespace std;
int main ()
{
   int n = 10;
   while( n < 20 )
   {
       cout << "n 的值:" << n << endl;
       n++;
   }
   return 0;
}

操作結果:

nの値: 10 
nの値: 11 
nの値: 12 
nの値: 13 nの値: 14 nの
: 15 nの値: 16 nの
値: 17 nの
: 18 
nの値: 19

3. do-while ループ

do...while ループは、ループの最後にその状態をチェックします。do...while ループは while ループに似ていますが、do...while ループはループが少なくとも 1 回実行されることを保証します。

#include <iostream>
using namespace std;
int main ()
{
   int a = 1;
   do
   {
       cout << a << endl;
       a++;
   }while( a < 10 );
   return 0;
}

操作結果:

1 
2 
3 
4 
5 
6 
7 
8 
9

4. ネスティング

C 言語では、if-else、while、do-while、for はすべて互いにネストできます。いわゆるネスト (Nest) とは、ステートメントに別のステートメントが含まれていることを意味します。たとえば、for の中に for があり、while の中に while があったり、for の中に while があり、while の中に if-else が入ったりするなどです。それらはすべて許可されています。

#include<iostream>
using namespace std;
bool a[1001];//在数组被定义为布尔变量时初始值都为零 
int main()
{
//埃氏筛
//质数的倍数一定不是质数
//所以只要从最小的数开始对质数的倍数进行标记,就可以找出质数 
	int n;
	cin>>n;
	for(int i=2;i<=n;i++)
	{
		if(a[i]==1)//“0”代表是质数“1”代表不是 
		{
			continue;//意思是不进行下面的操作,直接进入新的循环 
		}
		cout<<i<<endl;
		for(int j=i;i*j<=n;j++)
		{
			a[i*j]=1;
		}
	}
	return 0;
}

5を入力すると

操作結果:

2 
3 
5

練習してみよう!

 

1. ループ加算の場合

【説明】

for ループを使用します。出力 1+2+3+...+n の合計を計算します。

【入力】

「n」を入力します。

【出力】

タイトルの通り、合計です。

【入力サンプル】

10

【出力例】

55

 

2. アイテム

 

【説明】

正の整数 n、m について、s=1+2+3...+n を求めます。どの項目に加算すると、s の値が m を超えますか?

【入力】

「m」と入力します。

【出力】

出力n。

【入力サンプル】

1000

【出力例】

45

【ヒント】

【データ範囲】

すべてのデータの場合: 1≤m≤40000

 

3. 下2桁

【説明】

n 1992 の積の下 2 桁は何ですか?

【入力】

「n」を入力します。

【出力】

タイトルの下二桁のように。

【入力サンプル】

3

【出力例】

88

【ヒント】

【データ範囲】

すべてのデータの場合: n<2000。

 

4. 階乗と

 

【説明】

S=1!+2!+3!+....+n! を求めます。

【入力】

正の整数 n を入力します。

【出力】

出力 s。

【入力サンプル】

3

【出力例】

9

【ヒント】

【データ範囲】

すべてのデータの場合: 1≤n≤10。

 

5. 階乗の合計

 

【説明】

n を入力して、S=1!+2!+3!+…+n! (先頭の 0 を除く) の最後の 66 ビットを計算します。n≤10 の 6 乗、n! は最初の n 個の正の整数の積を表します。

【入力】

「n」を入力します。

【出力】

タイトルの通り、合計です。

【入力サンプル】

10

【出力例】

37913

【ヒント】

【データ範囲】

すべてのデータについて、1≤n≤999999。

 

答え

一。

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int sum = 0;
	for(int i = 1; i<=n;i++)//for循环 
	{
		sum += i;//"+="的意思是把i里的值累加到c里 
	}
	cout<<sum;
	return 0;
}

二。

#include<iostream>
using namespace std;
int main()
{
	int m;
	cin>>m;
	int s=0,n=0;
	while(s<=m)
	{
		n++;
		s+=n;
	}
	cout<<n<<endl;
	return 0;
}

三つ。

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int i=1;
	int ans=1;
	do
	{
		ans=ans*1992%100;
		i++;
	}while(i<=n);
	cout<<ans<<endl;
	return 0;
}

四。

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int S=0;
	for(int i=1;i<=n;i++)
	{
		int s=1;
		for(int j=1;j<=i;j++)
		{
			s*=j;
		}
		S+=s;
	}
	cout<<S<<endl;
	return 0;
}

五。

#include<iostream>
using namespace std;
int main()
{
	const int N=1e6;//const int  常变量 
	int n;
	cin>>n;
	long long S=0,s=1;
	for(int i=1;i<=n;i++)
	{
		s=s*i%N;
		S=(S+s)%N;
	}
	cout<<S<<endl;
	return 0;
 } 

あなたはすべて正しくやっていますか?

最初の問題が正解できれば、for ループを最初にマスターしたことを意味します。2 番目の問題が正解できたら、while ループを最初にマスターしたことを意味します。3 番目の問題が正解できれば、それはは、最初に do 全体のループをマスターしたことを意味します。4 番目の質問が正しく答えられる場合は、ネストされたループを基本的にマスターしたことを意味します。5 番目の質問がまだ正しく答えられる場合は、これらのスキルを熟練したことを意味します。 、次の章の学習を開始できます

 

おすすめ

転載: blog.csdn.net/m0_73220913/article/details/131253201