信息学奥赛奥赛直通车 ----- 循环,嵌套循环

C++循环也有很多中种,如for循环和while循环,下面我就和大家介绍一下这两种循环的作用和使用方法。

一.     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

二. while循环

只要括号里给定的条件为真,while 循环语句会重复执行一个目标语句。

实例

#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

三. do-while循环

do...while 循环是在循环的尾部检查它的条件。 do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环

实例

#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

四.  嵌套

在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

来做一些练习吧!

 

一. for循环求和

【题目描述】

利用for循环。计算输出1+2+3+...+n的和。

【输入】

输入n。

【输出】

如题述,之和。

【输入样例】

10

【输出样例】

55

 

二.  第几项

 

【题目描述】

对于正整数n,m,求s=1+2+3……+n,当加到第几项时,s的值会超过m?

【输入】

输入m。

【输出】

输出n。

【输入样例】

1000

【输出样例】

45

【提示】

【数据范围】

对于全部数据:1≤m≤40000

 

三.   末两位数

【题目描述】

求n个1992的乘积的末两位数是多少?

【输入】

输入n。

【输出】

如题述的末两位数。

【输入样例】

3

【输出样例】

88

【提示】

【数据范围】

对于所有数据:n<2000。

 

四.  阶乘和

 

【题目描述】

求 S=1!+2!+3!+....+n!

【输入】

输入正整数n。

【输出】

输出s。

【输入样例】

3

【输出样例】

9

【提示】

【数据范围】

对于所有数据:1≤n≤10。

 

五.  阶乘之和

 

【题目描述】

输入n,计算S=1!+2!+3!+…+n!的末66位(不含前导0)。n≤10六次方, 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循环,如果你能做对第二道题的话,说明你已经初步掌握了while循环,如果你能做对第三道题,说明你已经初步掌握了do whole循环,如果你能做对第四道题,说明你已基本掌握了嵌套循环,如果你还能做对第五道题,说明你已经熟练的掌握了这些技能,你可以开启下一章的学习

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值