第四单元 循环结构程序设计

循环结构程序设计

在程序设计中,经常需要反复执行某一条语句或一个语句块,这种结构称为“循环结构”或者“重复结构”。

在C++中,循环结构有三种实现语句:while语句、do-while语句和for语句。

循环变量可以在循环语句中定义,其作用范围是循环语句,离体循环语句不起作用。

◆while语句

1.while语句的格式如下:

while(表达式){

     循环体

}

2.其含义为:先计算表达式(一般称为循环条件)的值,当表达式的值为真(循环条件成立)时,去执行一次循环体。和if语句不同的是,执行完一次循环体后,while语句又回到开始处,继续计算和判断表达式的真假,决定是否再次执行循环体。也就是“当表达式成立时,不断重复执行循环体”,所以又称为“当型循环”。

3.在while语句中,一定要注意“循环条件表达式“的书写、以及循环体中“循环控制变量”的更新,从而避免死循环。同时,循环条件表达式和循环控制变量的变化,也决定了循环体被执行的次数。

4.#include<iostream>

using namespace std;

int main(){

     int x,s=0;

     cin >>x;

     while(x!=0){//也可以简写成while(x)

            if(x>0)s++;

            cin >>x;

}

cout <<s<< endl;

return 0;

}

◆do-while语句

do-while语句是C++中用于解决至少执行一次重复操作(循环体)的循环语句。

1.do-while语句的格式如下:

do{

     循环体

}while(表达式);

2.其含义为:先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到表达式不成立,才退出循环。一般称之为“直到型循环”。

所示。

3.do-while语句与while语句都可以实现循环结构,区别是:do-while语句先执行循环体,再判断表达式。所以,至少执行一次循环体。

4.#include<iostream>

using namespace std;

int main(){

     double r,m,y;

     int k=0;

     cin>>r >>m>>y;

     do{

               m=m*(1+r/100);

               k=k+1;

      }while(m <=y)

       cout << k<< endl;

       return 0;

}

◆for语句

在实际应用中,如果重复执行的操作(循环体)次数是固定的已知的,则一般使用for语句。

1.for语句的格式如下:

for(表达式1;表达式2;表达式3){

      循环体

}

2.#include<iostream>

using namespace std;

int main(){

      int k;

      cin>>k;

      int k1=1,k2=1,k3=1;

      for(int i=3;i<=k;i++){

      k3=k1+k2;

      k1=k2;       //迭代法

      k2=k3;

}

cout << k3<<endl;

return 0;

}

◆循环嵌套

循环结构与分支结构类似,也可以在一个循环语合

的循环体里出现另一个循环语句,不管是while语句、do-while语句还是for语句。这样的循环结构称为“循环嵌套”。

1.数字三角形

#include<cstdio>

using namespace std;

int main(){

      int n,t=1;

      scanf ("%d",&n);

      for(int i=1;i<=n;i++){

      for(int j=1;j<=i;j++){

             printf("&d",t%10);

             t++;

      }

      printf("\n");

}

return 0;

}

2.与7无关的数

#include<iostream>

using namespace std;

int main(){

      int n,ans=0;

      cin >>n;

      for(int i=1;i<=n;i++){

      int flag1=1,flag2=1;

      if(i%7==0) flag1=0;

      int x=i;

      while(x && flag2){

            if(x%10==7)

X=X/10;

      }

      if(flag1 && flag2) ans++;

}

cout << ans << endl;

return 0;

}

◆break和continue语句

在循环结构中,有时需要提前跳出循环体,或者忽略本次循环的后续语句而去执行下一循环。为此,C++提供了break语句和continue语句。

1.在循环体中遇到break语句,就会立刻跳出循环体,执行循环结构后面的语句。

2.在循环体中遇到continue语句,就会忽略本次循环的后续语句而去执行下一次循环。

3.#include<iostream>

#include<cmath>

using namespace std;

int main(){

      int m,n,i,j,ans =0;

      cin >>m >>n;

      for(i=m;i<=n;i++){

             for(j=2;j<sqrt(i);j++)

                     if(i%j==0)break;

              if(j<sqrt(i))continue;

              ans++i

}

cout << ans << endl;

return 0;

}

◆程序的调试与跟踪

动态调试用增加输出语句的方式来进行,提交之前注销掉。

1.静态查错:程序写好后,首先要从头至尾通读程序,检查是否存在下面几个问题:语句的顺序、思路、逻辑是否有误;语法是否有误,如关键字是否录入错误、变量是否没有定义就使用、变量的大小写

问题、用错标点符号等。其他常见的错误还有以下几个方面。

(1)变量未赋初值

(2)中间运算结果越界

(3)if-else语句混乱   

(4)实数比较出错

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值