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;
}

posted on 2019-09-15 12:39  Tlyh  阅读(728)  评论(0编辑  收藏  举报

导航