break语句、continue语句、goto语句的用法辨析
1、break语句
break语句常使用在switch语句、循环体以及if语句中,它的作用是跳出循环,而且只能跳出一层循环。
for (i = 0; i < 10; ++j)
{
for (j = 0; j < 10; ++j)
{
++max;
if (max == 45)
break;
}
}
cout << max<<endl;
如上代码块中,最后输出的max的值是95,当max为45时,利用break语句跳出了内层for循环,此时j的值是4,因为break语句是跳出这一层循环,这一层循环结束,开始判断是否进行外层循环,当再次进入内层for循环时,j的值又被赋值为0,如果没有break语句的话,max应该会自增100次,而因为有break语句,只自增了95次。

2、continue语句
continue语句可以出现在循环体中,其作用是结束本次循环,不会跳出循环,接着一般会开始判断是否进行下一次循环。
int i;
int max=0;
int j;
for (i = 0; i < 10; ++i)
{
for (j = 0; j < 10; ++j)
{
++max;
if (max == 45)
continue;
++max;
}
}
cout << max<<endl;
这次我们原本打算让max自增200次,但是我们在内层循环中增加了一个continue语句。

最终输出的max的值是199,当max的值满足if语句的条件时,continue语句只是终止了这一次循环,而不是终止这一层的循环。
3、goto语句
goto语句是一个万能跳转语句,使程序的执行流程跳转到标号语句所指定的语句,但是大量的使用goto语句会破坏程序的结构。
for (i = 0; i < 10; ++i)
{
for (j = 0; j < 10; ++j)
{
++max;
if (max == 45)
goto tran;
}
}
tran:
cout << max<<endl;
这次我们在内层for循环中使用了goto语句,使程序的执行流程跳转到我们的标号语句tran所指定的语句,直接跳过了两层的循环,最后max的值为45。

例题:信息加密/解密小程序
处理用户从键盘输入的一串字符串,将字符串中的字符'0','1','2','3','4','5','6','7','8','9'分别替换成'9','8','7','6','5','0','1','2','3','4'。
#define _CRT_SECURE_NOWARNINGS
#include<iostream>
#include<string>
using namespace std;
void codeString(string &a)
{
int i = 0;
while (a[i] != '\0')
{
switch (a[i])
{
case '0':
a[i] = '9';
break;
case '1':
a[i] = '8';
break;
case '2':
a[i] = '7';
break;
case '3':
a[i] = '6';
break;
case '4':
a[i] = '5';
break;
case '5':
a[i] = '0';
break;
case '6':
a[i] = '1';
break;
case '7':
a[i] = '2';
break;
case '8':
a[i] = '3';
break;
case '9':
a[i] = '4';
break;
default:
break;
}
++i;
}
}
void decodeString(string &a)
{
int i = 0;
while (a[i] != '\0')
{
switch (a[i])
{
case '0':
a[i] = '5';
break;
case '1':
a[i] = '6';
break;
case '2':
a[i] = '7';
break;
case '3':
a[i] = '8';
break;
case '4':
a[i] = '9';
break;
case '5':
a[i] = '4';
break;
case '6':
a[i] = '3';
break;
case '7':
a[i] = '2';
break;
case '8':
a[i] = '2';
break;
case '9':
a[i] = '0';
break;
default:
break;
}
++i;
}
}
int main()
{
string password;//用于存储用户输入的字符串
int op;
while (true)
{
cout << "please input the string:";//输入字符串
cin >> password;
cout << "selecting operation:" << endl;//选择操作
cout << "1:encrypt." << endl;//加密
cout << "2:decode" << endl;//解密
cout << "3:log out" << endl;//退出系统
cout << "Enter the corresponding operatiom number:";
cin >> op;
switch (op)
{
case 1:codeString(password);
cout << "Encrypted string:" << password<<endl;
break;
case 2:decodeString(password);
cout << "Decrypted string:" << password<<endl;
break;
default:goto theend;
}
}
theend:
system("pause");
return 0;
}

break语句、continue语句、goto语句的用法辨析的更多相关文章
- C++中的break、continue、goto语句
break.continue.goto break用于提前结束循环.只能打断一层循环.是把一层循环全部结束掉.continue则是提前结束循环内单次,继续循环下一步.
- 跳转语句 break;continue; return; goto 区别用法
C语言是按顺序执行语句的语言——一个接一个.即使它有条件语句或循环语句,程序的流程也是自上而下的.没有顺序流的随机跳转或跳转.但我们的程序是为了满足任何现实世界的需求,一个接一个地执行永远不会很直接. ...
- break、continue和goto 三者作用介绍
跳跃语句 由于break.continue和goto语句有助于跳跃到代码中的某个特定语句,因此它们属于跳跃语句.下面是这三个语句的介绍. ①break语句 这个语句常与switch语句联合使用:但是, ...
- C#流程控制语句--跳转语句(break,continue,goto,return,)
跳转语句:是程序运行到某一位置时,可以跳到程序中另一个代码的语句.循环控制语句. 跳转语句:break 1.用于退出包含在最内层的循环或者退出一个switch或loop语句,程序流将继续紧接着loop ...
- javascript中break,continue和return语句用法小结:
Break语句会使程序立刻退出包含在最底层的循环或者退出一个switch语句,它是用来退出循环或者switch语句. 例如: <script type="text/javascript ...
- Javascript-关于break、continue、return语句
JS-break:break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句.由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才 ...
- PHP:第二章——PHP中的break一continue一return语句
知识点一:break语句 break 结束当前 for,foreach,while,do-while 或者 switch 结构的执行. break 可以接受一个可选的数字参数来决定跳出 ...
- Java中break、continue、return语句的使用区别
break.continue.return之间的区别与联系 在软件开发过程中,逻辑清晰是非常之重要的. 代码的规范也是非常重要的.往往细节决定成败.在编写代码的时候,一定要理解语言的作用以及使用的方法 ...
- C语言中的break、continue和goto三者的区别与用法
exit的话是在stdlib的头文件里面定义的,他是的程序退出,正如exit的字面意思一样break的话是终止当前循环继续进行循环后面的语句,但是程序照样还在进行只能while switch for中 ...
- Go语言流程控制中的break,continue和goto(七)
break(跳出循环) break用于跳出整个循环,如下: func main() { ;i<;i++{ { break } fmt.Println(i) } } // 0 1 2 3 代码里只 ...
随机推荐
- 前端HTTP缓存
Web 缓存大致可以分为:数据库缓存.服务器端缓存(代理服务器缓存.CDN 缓存).浏览器缓存.其中前端比较关心的是浏览器缓存,包括今天要说的HTTP缓存和前面说过的cookie.localStora ...
- 20181022-JSP 开发环境搭建
JSP 开发环境搭建 JSP开发环境是您用来开发.测试和运行JSP程序的地方. 本节将会带您搭建JSP开发环境,具体包括以下几个步骤. 配置Java开发工具(JDK) 这一步涉及Java SDK的下载 ...
- getAttribute和getParameter
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...
- 基于Anaconda安装Tensorflow 并实现在Spyder中的应用
基于Anaconda安装Tensorflow 并实现在Spyder中的应用 Anaconda可隔离管理多个环境,互不影响.这里,在anaconda中安装最新的python3.6.5 版本. 一.安装 ...
- Windows XP SP2上安装.net 4
1.安装 KB893803-v2-x86 2.安装dotnetfx35 3.安装dotNetFx40_Client_x86_x64 4.安装 NET Framework 4.0
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技 ...
- react 类样式的一些使用方法
在 css类不想使用穿透的状态,可以再webpack配置 modules:true,它位于css-loader下,此外调用css的类时可能会自动生成一个hash值,这时候如果想显示本来的名字,可以打 ...
- list转datatable,SqlBulkCopy将DataTable中的数据批量插入数据库
/// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...
- Sails.js中文文档,Sails中文文档
Sails.js中文文档 http://sailsdoc.swift.ren/ Sails.js是一个Web框架,可以于轻松构建自定义,企业级Node.js Apps.它在设计上类似于像Ruby ...
- Codeforces Round #573
http://codeforces.com/contest/1191 A 给一个数,可以加0,1或2然后取模,再映射到字母,字母有排名,求最大排名. 总共只有4种情况,讨论即可 #include< ...