我是靠谱客的博主 美丽嚓茶,最近开发中收集的这篇文章主要介绍c++感想循环语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

**

六循环结构程序设计

**

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

.循环结构有三种实现语句:while语句,do—while语句和for语句。
**

1.while语句

①.while语句格式:

while(表达式)
{
循环体 }

注1:当循环体不符合表达式,则停止循环行下一语句 。

例:
int i=1;
while(i<=10)
{ printf("@");i++;}

输出情况:

①将i++改为i+=2,程序输出五个@。
②将i<=10改为i<1,程序无输出,因为第一次循环条件就不成立。
③如果将i++遗漏,程序会一直执行printf("@")语句,永远不会结束,这种情况称为"死循环"。

注2:注意循环条件表达式的书写,以及循环体中"循环控制变量"的更新。同时循环条件表达式和循环控制变量的变化,也决定了循环体被执行的次数。

例子:例1 求1+2+3+.+100的值。

[问题分析]设sum存放答案,初始化为0。再设i为循环控制变量,初始化为1。 当循环条件(i<=100)成立时,反复执行以下循环体:
(1)将i累加到和sum中;
(2)将i取值为下一个数,即i++。最后,输出ans的值。

//p4-1-1#include<iostream>
using namespace std;
int main(){
int i=1,sum=0;`
while(i<= 100)
sum+=i++;
cout<< sum<< endl;
return 0;}

**

2.do–while语句

①do–while语句格式:

do{
循环体
}
while(表达式);
**
含义**:先执行一次循环体,然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到表达式表达式不成立,才退出循环。一般称之为"指导性循环"。

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

例1
用do-while 语句实现:

输出一行10个“@”.

#include<cstdio>
using namespace std;
int main()(int i=1;
do{printf("@")i++}
while(i<10);
return 0;}

2例子 统计正数

[问题描述]用do-while 语句实现:输人若干整数,以0结尾,统计其中有多少个正整数。
[输入格式]一行若干整数,最后一个为0。
[输出格式]一行一个整数,表示输人的数据中正整数的个数。
[样例输入]3 1 6 -3 2 0

#include<iostream>
using namespace std;
int main(){
int x,s=0;
do{(cin>>X)
if(x>0)S++;}
while(X !=O);
cout << s<< endl;
return 0;}

3.for语句

①for语句格式:

for(表达式1;表达式2;表达式3)
{循环体}

②含义:先运行表达式1,然后继续运行表达式2,如果为真,则执行循环体。之后执行表达式3。如果为假,则退出循环。

例子:输出一行10个"@"

①#include<iostream>
using namesoace std;
int main(){
for(int i=1;i<=10;i++)
printf("@");
printf("n");
return 0;}

for语句写法灵活,上述程序也可以写成:

②#include<iostream>
using namespace std;
int main( )
{int i=1;
for(;i<10;i++)
printf("@")printf("n")return 0;}

还可以是

③#include<iostream>
using namespace std;
int main()
{int i=1;
for(;i<10;)
{printf("@n");i++;}
printf("@n");
return 0;}

注1:循环变量,只能在循环语句中起作用,离开循环语句就不起作用。
注2:在开头的定义变量,在循环的()中可以不用再加,但要在两个中表达式加";"。
注3:做题时观察好再用,不要糊里糊涂的就用

4.循环嵌套

1.介绍:在一个循环语句的循环体里出现另一个循环语句,不管是while语句、do–while语句还是for语句。这样的循环结构称为"循环嵌套"。

例子

输出矩形。
[问题描述]输入n和m,输出一个n行m列的“@”矩形图案。
[输入格式]一行两个正整数n和m,中间用一个空格隔开n,m<=100。
[输出格式)输出一个n行m列的“@”矩形图案。
[样例输入]3 4
[样例输出)
@@@@
@@@@
@@@@
[问题分析]要输出n行,所以可以编写一个外层循环,穷举行。然后,在循环体里,还要输出m个“@”,所以再嵌套一个内层循环,穷举每一行的“@”个数。

#include<cstdio>
using namespace std;
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){   
for(int j=1;j<=m;j++) printf("*");   
printf("n")}
return  0;}

注1:两条循环语句要加{ }。
注2:做题时要学会找规律或解决方法,尽量简洁。
注3:在循环中也可以利用标志变量,用标志变量来控制循环。

5.break和continue语句

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

例:与7无关的数。
[问题描述]一个正整数,如果它能被7整除,或者它的某一位上的数字为7,则称其为为“与7相关”的数。现在,请编程求出所有小于或等于n的“与7无关”的正整数个数。
[输入格式]一行一个正整数n,n<=10^6。
[输出格式]一行一个整数,表示答案。
[样例输入]21
[样例输出]17
[问题分析]判断x中是否有数字7的时候,一旦出现“x%10==7”,则说明x是与7相关的数,就可以用break 语句立刻退出当前的while 循环,这样可以提高程序的效率。

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

//p4-5-1
#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)
{  
  if(x%10== 7){flag2=0;break;}
   x=x/10;
    if(flag1&&flag2)ans++;}
     cout << ans<< endl;
      return 0;
      }

注1:这道例题中使用了标志变量和多个if语句。要仔细思考和学习。

[问题描述]一个正整数,如果它能被7整除,或者它的某一位上的数字为7,则称其为“与7相关”的数。请编程求出所有小于或等于n的“与7无关”的正整数个数。
[输人格式]一行一个正整数n,n<=10^6。[输出格式]一行一个整数,表示答案。
[样例输入]21
[样例输出]17
[问题分析]当i是7的倍数,即“i%7==0”时,说明i已经是与7相关的数了,此时,就不再需要判断i的某一位是否是7了。所以,可以用continue忽略本次循环的后续语句,而去执行下一次循环,判断下一个数了。 这样做同样可以提高程序的效率。

#include<iostream>
using namespace std;
int main(){
int n,ans=0;
cin>>n;
for(int i =l;i <=n; i++)
{int flag=1;
   if(i %7==0)continue;
   int x=i;
   while(x){if(x %10==7){flag=0;break;}
     x=x/10;
     }
     if(flag)ans++;
     }
cout << ans << endl;
return 0;
}

**注1:**在使用break和continue应判断好情况和程序内容,再使用。

6.程序的调试与循环

①静态差错

(1)变量未赋初值

(2)中间运算结果越界。

int a=100000;int b;
b=a
a/100;
cout<<b<<endl;
*

原因:c++在进行编译时,先计算"aa",把它放到一个中间变量中,然后再把"/100"放到b中,而"aa"的结果超出了int范围,这就造成了错误。

(3)if–else语句混乱

在使用if–else的嵌套时出错。
if-else语句的规则是if语句可以没有else语句与之相配;else语句总是与前面的,最近的if语句匹配。
例如

   **if(条件a) 
        if(条件b)  代码段b
    else 代码段a**
   
    本例与原意不符,原因:else 与if(条件b)相匹配,导致代码段a需在if(条件b)不成立时,方能执行。
    (4)实数比较错误在比较两个实数是否相等时,如果直接用等号,往往会造成错误。 这是浮点运算存在误差所造成的,解决办法是使用两数差的绝对值与一个相对极小量进行比较如:if(fabs(x-y)<1e-6)…或者if(fabs(x)<le-6).……。
  **注1:平常要注重积累经验和教训。**

**

感想

**在学习本单元时,明显感到困难,这一章既有新的内容又有上一章和嵌套有关。如果上一章的嵌套未学清楚,那么这一章在做题时会有些混乱。

这一章是关于循环语句的使用,而循环在思考的时候很容易晕,这更需要我们将基础知识扎牢。平常要多训练一些,让自己的见识广一些。而且在做题时,题中所用到的语句可能和其他的题所需要的语句相似或一样。

学习循环嵌套不仅要把三个循环语句记清楚,还要能成功的将他们在实题中运用。在做题时也要细心,不要因为小错误而导致程序无法运行。

循环嵌套中其实我仍还有许多问题未解决,比如在做题时无法正确判断循环该用哪一个和该用几次。这个问题我会在看例题时来学习模仿然后自己再设计出程序来。平时自己也要多积累例题,但不能靠做题来提升。

学完循环语句后,其实也是将上一章的内容进行了一遍复习和延伸。c++虽然越学越难,但也感觉越来越有意思,越来越能体会到c++的乐趣,希望下一章的学习能越来越高效。****

最后

以上就是美丽嚓茶为你收集整理的c++感想循环语句的全部内容,希望文章能够帮你解决c++感想循环语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部