c++笔记-循环结构和循环语句语句1

#循环结构和循环语句

在人们所要处理的问题中常常遇到需要反复执行某一操作的情况。这就需要用到循环控制。许多应用程序都包含循环。顺序结构、选择结构和循环结构是结构化程序设计的3种基本结构,是各种复杂程序的基本构造单元。循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构 。

循环结构的三个要素:

1、循环变量
2、循环体
3、循环终止条件

常见循环语句有while,do while,go to,for。

##一、while语句

特点:先判断表达式,后执行循环体(当型)

说明:

1、循环体有可能一次也不执行

2、循环体可为任意类型语句

3、下列情况,退出while循环:

条件表达式不成立(为零)

循环体内遇break,return,goto

4、无限循环: 
   while(1)
   循环体;

##例题:
输入一串字符,以“?”号结束,输出其中的字母个数和数字个数。

解决这个问题的算法是:设置两个计数器,分别用于统计字母和数字的个数。输入和统计都是重复性的工作,可以用循环结构实现。字母字符、数字字符的ASCII码值是连续的,可以很轻易地使用条件语句判断。每输入一个字符,如果不是“?”号,就判别它是否为字母,若为字母,则字母计数器累加1;否则,再判别是否为数字,若为数字,则数字计数器累加1.重复上述工作,一直到输入的字符为“?”后结束。最后输出字母和数字的个数。
程序中用变量ch存放当前输入的字符,nl 为统计字母个数的计数器,ng为统计数字个数的计数器。按上述算法编写程序如下:

#include
using namespace std;
int main()
{ intnl≈0, ng=0;
char ch;
cin.get(ch); //输入第一个字符,建立循环条件。
while (ch!= “?) //循环条件为ch!=?”
{ if(ch>=‘a’&&ch<≈Zlch>=‘A’ &&ch<='Z) ++ nl;
else if(ch>= ‘0’ && ch<='9) ++ ng;
cin.get(ch); //输入后续字符

cout<<“ml=”<<nl<<" ng-"<< ng<<"n’;
}
运行程序,输入数据和输出结果如下:
Is the password 123456 ?nl=13 ng=6
in etch的作用是获取一个当前输入字符并写入变量 ch中。任何字行,包括空格、回车等。这与采用输入运算符cim>不同。作为输入界符,结束一个变量的输入。

  ## 使用while循环
当不确定到底要迭代多少次时,使用while循环比较合适,比如读取输入的内容就是如此。还有一一种情况也应该使用while循环,这就是我们想在循环结束后访问循环控制变量。

例如:
vector V;
int i;
//重复读入数据,直至到达文件末尾或者遇到其他输入问题
while (cin >> i)
v.push_ back(i) ;//寻找第一个负值元素
auto beg = v.begin() ;
while (beg != v.end() && *beg >= 0)
++beg;
if (beg == v.end())
//此时我们知道V中的所有元素都大于等于0
注意了:
第一个循环从标准输入中读取数据,我们一开始不清楚循环要执行多少次,当cin读取到无效数据、遇到其他些输入错 误或是到达文件末尾时循环条件失效。第二个循环重复执行直到遇到一个负值为止,循环终止后,beg 或者等于v.end(),或者指向v中一个小于0的元素。可以在while循环外继续使用beg的状态以进行其他处理。

#二、do while语句

特点:先执行循环体,后判断表达式(直到型)
说明:
1、至少执行一次循环体
3、dowhile语句应该在括号包围起来的条件后面用一个分号表示语句结束
2、do-while可转化成while结构

##在do语句中,求表达式的值之前首先执行一次循环体, 表达式不能为空。如果表达式的值为假, 循环终止:否则,重复循环过程。表达式使用的变量必须定义在循环体之外。
我们可以使用do while 循环(不断地)执行加法运算:
//不断提示用户输入一对数,然后求其和
string rsp; // 作为循环的条件,不能定义在do的内部
do {

cout << "please enter two values: " ;
intvall=0,val2=0;
cin >> vall>>val2;
cout<<'Thesumof”<<vall<<”and"<<val2
    << "=" << val1 + val2 << "\n\n"
    << "More? Enter yes or no:”;
cin >>rsp;

} while (irsp.empty() && rsp[0] != ‘n’) ;

循环首先提示用户输入两个数字,然后输出它们的和并询问用户是否继续。条件部分检查用户做出的回答,如果用户没有回答,或者用户的回答以字母n开始,循环都将终止。否则循环继续执行。

因为对于do while 来说先执行语句或者块,后判断条件,所以不允许在条件部分定义变量:
do {
//…
mumble(foo) ;
} while (int foo = get_ foo()); //错误:将变量声明放在了do的条件部分

如果允许在条件部分定义变量,则变量的使用出现在定义之前,这显然是不合常理的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值