课程笔记:循环结构

本文深入解析循环结构,包括for、while和do-while语句的使用方法及格式,通过实例演示循环嵌套、计算阶乘、最大公约数等算法,适合初学者掌握循环控制流程。
循环结构
for语句
while语句
do-while语句
循环嵌套

1.语句格式:

a.for(控制变量初始化表达式;条件表达式;增量表达式)

ex.

for(i=1;i<=100;++i)

for(i=100;i>=1,--i)

按所示数列改变控制变量值:99、88……11、0,增量为-11

for(int i=99;j>=0;j-=11)

控制变量i和j共同进行循环控制,i从1变到99,从2变到100,增量均为2

for(int i=1,j=2;i<=99&&j<=100;i+=2;j+=2)

注:可以再for循环“控制变量初始化语句”声明变量,这些变量只在for循环结构中有效,离开了该for结构,变量就无效了。

 

#include<iostream>
using namespace std;
int main()
{
    int sum=0;
    for(int i=1;i<=100;++i)//i初始值为1,终值为100,每次增量为1
    sum+=i;
    cout<<sum;
    return 0;
}
    
for循环计算n!
#include<cstdio>
using  namespace std;
int main()
{
    long long s=1;//Noip2010开始C++语言long long允许使用
    int n;//n不能定义为long long,否则for语句死循环
    scanf("%d",&n);
    for(int i=1;i<=n;++i)//若s定义为int,当n=13时s的值就溢出了
    s*=i;
    printf("%lld\n",s);
    return 0;
}

2.语句格式

while(条件表达式)

ex.

(1)i=0;

while(i<10)

++i;(重复执行)

(2)while(cin>>x,x<0)//相当于cin>>x;while(x<0)cin>>x;

注:while括号中可以包含多个语句,中间用逗号隔开,但是只判断最后一个语句是否为真;

ex.while(x>10,x==10,x<10) 

如果x<10,则继续执行循环,否则退出循环。

最大公约数
法一:
#include<iostream>
using namespace std;
int main()
{
    int m,n,gcd;
    cin>>m>>n;
    gcd=m>n?n:m;//注意此处的写法
    while(gcd>1&&(m%gcd!=0||n%d=0))
    gcd--;//每次减一寻找最大公约数
    return 0;
}
法二:辗转相除法
#include<iostream>
using namespace std;
int main()
{
    int m,n;
    cin>>m>>n;
    int r=m%n;
    while(r!=0)
{
    m=n;
n=r;
r=m%n;
}
cout<<"最大公约数="<<n<<endl;
return 0;
}
    

3.语句格式

do

{

}

while(条件表达式);

在do语句的循环体中也可使用break语句,用它来非正常结束循环的执行

校体操队到操场集合,排成每行两人,最后多出一人;拍成每行三人,也多出一人;分别按每行排4,5,6人,都多出一人;当排成每行七人时,正好不多。求体操队至少多少人~
#include<iostream>
using namespace std;
int main()
{
int x=0;
do
{
bool yes=true;
x+=7;
if(x%2!=1)yes=false;
if(x%3!=1)yes=false;
if(x%4!=1)yes=false;
if(x%5!=1)yes=false;
if(x%6!=1)yes=false;
}while(yes==false);//直到yes的值为真
cout<<"All="<<x;
return0 0;
}

程序中对每个x值,都先给yes赋真值,只有在循环体各句进行判断时,都得到“通过”才能保持真值。

4.循环嵌套

ex.

求s=1!+2!+3!+4!+……+10!
#include<iostream>
using  namespace std;
int main()
{
int s=0;
for(int i=1;i<=10;++i)
{
int t=1;
for(int j=1;j<=i;++j)//求i!
t*=j;
s+=t;//累加i!
}
cout<<s;
return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值