控制程序流程--循环、判断语句

前面学习的一些例子,他们都是按顺序执行语句的。而控制程序流程的语句,不但避免了程序只能从上往下执行,而且可以提供不同执行路径的条件语句和重复循环执行的语句。

if语句判断

1 有条件的执行多条语句
先学习一下c_str()和strcpy_s():建议看一下下面的博客
http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html
https://www.cnblogs.com/woshitianma/p/3685661.html
下面的例子是将字符串复制到char数组之前,检查数组的容量是否足够

#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	char Buffer[20] = { '\0' };
	cout << "Enter a line of text" << endl;
	string LineEnter;
	cin >> LineEnter;
	if (LineEnter.length() < 20)
	{
		strcpy_s(Buffer, LineEnter.c_str());
		cout << "Buffer is : " << Buffer << endl;
	}
	system("pause");

	return 0;
}

2 嵌套if语句

下面的例子是执行乘法或除法运算


#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	cout << "Please input two numbers : "<<endl;
	double num1 = 0, num2 = 0;
	cin >> num1;
	cin>> num2;
	cout << "Enter d  to division,other to multiply : ";
	char intputlatter='\0';
	cin >> intputlatter;
	if (intputlatter == 'd')
		if (num2 != 0)
			cout << num1 << "/" << num2 << "=" << num1 / num2<<endl;
		else
			cout << " Division by zero is not allowed ";
	else
		cout << num1 << "x" << num2 << "=" << num1 *num2;
	system("pause");
	return 0;
}

switch-case语句判断

switch-case语句经常和枚举常量结合使用
枚举常量的定义在前面记录过:https://mp.csdn.net/mdeditor/83898459#
下面是一个判断一周内与哪个星星的名字对应

#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	enum daysofweeks
	{
		monday = 1,
		Tuesday,
		wednesday,
		thursday,
		friday,
		saturday,
		sunday
	};
	cout << "Enter a number of day" << endl;
	int day = monday;
	cin >> day;
	switch (day)
	{
	case monday:
			cout << "monday was named after moon" << endl;
			break;
	case Tuesday:
		cout << "Tuesday was named after mars" << endl;
		break;
	case wednesday:
		cout << "wednesday was named after mercury" << endl;
		break;
	case thursday:
		cout << "thursday was named after jupiter" << endl;
		break;
	case friday:
		cout << "friday was named after venus" << endl;
		break;
	case saturday:
		cout << "saturday was named after saturn" << endl;
		break;
	case sunday:
		cout << "sunday was named after again" << endl;
		break;
	default:
		cout << "Please input again " << endl;
		break;
	}
	
	system("pause");
	return 0;
}

注意:
1 在枚举类型的每一个常量间以逗号分开。
2 在每个语句的后面的break是必须的,而且在每一个case 后面为冒号。
3 defult 这一标签必须的。
4 switch-case常和枚举类型结合使用,提高了代码的可读性。

常用的循环语句

常用的循环有四种:while、do-while、for循环、嵌套循环
下面用一个根据用户请求循环求解的例子来解释四种循环的用法:
1 while循环

#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{	
	char inputlatters ='m';//确保程序进入循环
	while (inputlatters = 'm')
	{
		cout << "Please input two numbers : " << endl;
		double num1 = 0, num2 = 0;
		cin >> num1;
		cin >> num2;
		cout << "Enter d  to division,other to multiply : ";
		char intputlatter = '\0';
		cin >> intputlatter;
		if (intputlatter == 'd')
			if (num2 != 0)
				cout << num1 << "/" << num2 << "=" << num1 / num2 << endl;
			else
				cout << " Division by zero is not allowed "<<endl;
		else
			cout << num1 << "x" << num2 << "=" << num1 * num2<<endl;
		cout << "inputlatter m is continue,other is exit ; " << endl;
		cin >> inputlatters;
	}
	system("pause");
	return 0;
}

2 do- while循环

#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	char inputlatters = 'm';
	do
	{
		cout << "Please input two numbers : " << endl;
		double num1 = 0, num2 = 0;
		cin >> num1;
		cin >> num2;
		cout << "Enter d  to division,other to multiply : ";
		char intputlatter = '\0';
		cin >> intputlatter;
		if (intputlatter == 'd')
			if (num2 != 0)
				cout << num1 << "/" << num2 << "=" << num1 / num2 << endl;
			else
				cout << " Division by zero is not allowed "<<endl;
		else
			cout << num1 << "x" << num2 << "=" << num1 * num2<<endl;
		
		cout << "inputlatter m is continue,other is exit ; " << endl;
		cin >> inputlatters;
	} while (inputlatters = 'm');
	system("pause");
	return 0;
}

3 for循环

#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	for(char inputlatters = 'm' ; inputlatters = 'x' ;)
	{
		cout << "Please input two numbers : " << endl;
		double num1 = 0, num2 = 0;
		cin >> num1;
		cin >> num2;
		cout << "Enter d  to division,other to multiply : ";
		char intputlatter = '\0';
		cin >> intputlatter;
		if (intputlatter == 'd')
			if (num2 != 0)
				cout << num1 << "/" << num2 << "=" << num1 / num2 << endl;
			else
				cout << " Division by zero is not allowed "<<endl;
		else
			cout << num1 << "x" << num2 << "=" << num1 * num2<<endl;
		
		cout << "inputlatter m is continue,x is exit ; " << endl;
		cin >> inputlatters;
	} 
	system("pause");
	return 0;
}

注意:
1 每一种方法初始化的方法以及位置;
2 do-while执行完毕后面需要有分号;
3 for 循环有三个表达式,第一个表达式为循环起始的条件,第二个为终止条件,第三个为迭代器:在每次循环之后进行判断,防止超越数组边界。

4 嵌套循环
同样用一个求解斐波那契数列的例子来学习嵌套循环

扫描二维码关注公众号,回复: 4428972 查看本文章
#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
    cout<<"Please input the number of element : ";
    int numbers=0;
    cin>>numbers;
	char continuelatters = '\0';
	int num1 = 0, num2 = 1;
	int nextnum1 = 0;
	int index = 0;
	cout << num1 << " " << num2<<" ";
	do
	{
		for (index = 0; index < numbers; index++)
		{
			cout << num1 + num2<<" ";
			nextnum1 = num2;
			num2 = num1 + num2;
			num1 = nextnum1;

		}
		cout << endl<<"Do you want to continue (y/n) : ";
		cin >> continuelatters;
	} while (continuelatters == 'y');
	system("pause");
	return 0;
}

输出结果如下图所示:
在这里插入图片描述

无限循环的处理方法–continue与break

在学习处理无限循环问题之前,
学习下常出现的无限循环的三种情况:

while(true)
do-while(true)
for(;;)

无限循环的处理方法

while(true)
{dosomething;
if(expression)
break;
}
do-while(true)
{dosomething;
if(expression)
break;
}
for(;;)
{dosomething;
if(expression)
break;
}

下面用一个小例子说明continue与break的终止循环的用法:

//未添加终止条件的无限循环
#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	for( ;  ;)
	{
		cout << "Please input two numbers : " << endl;
		double num1 = 0, num2 = 0;
		cin >> num1;
		cin >> num2;
		cout << "Enter d  to division,other to multiply : ";
		char intputlatter = '\0';
		cin >> intputlatter;
		if (intputlatter == 'd')
			if (num2 != 0)
				cout << num1 << "/" << num2 << "=" << num1 / num2 << endl;
			else
				cout << " Division by zero is not allowed "<<endl;
		else
			cout << num1 << "x" << num2 << "=" << num1 * num2<<endl;
		
	} ;
	system("pause");
	return 0;
}

结果如下图所示:
由图可知:会出现一直要求输入计算数字的提示,不会自动退出循环。
在这里插入图片描述
下面的代码有一个注意的地方:在判断下面这两个句子时,用的是等号“==”,不要马虎,写成赋值“=”,否则会一直提示重新输入两个数字。
if (changnumberslatter ==‘y’)
if (exitnumberslatter == ‘y’)

//添加了continue直接跳入下次循环,及break结束循环。
#include "stdafx.h"
#include "iostream"
#include "string"

using namespace std;
int main()
{
	for(;;)
	{
		cout << "Please input two numbers : " << endl;
		double num1 = 0, num2 = 0;
		cin >> num1;
		cin >> num2;

		cout << "Do you want to change numbers (y/n) : " << endl;
		char changnumberslatter = '\0';
		cin >> changnumberslatter;
		if (changnumberslatter =='y')
			continue;
		else
		{
			cout << "Enter d  to division,other to multiply : ";
			char intputlatter = '\0';
			cin >> intputlatter;
			if (intputlatter == 'd')
				if (num2 != 0)
					cout << num1 << "/" << num2 << "=" << num1 / num2 << endl;
				else
					cout << " Division by zero is not allowed " << endl;
			else
				cout << num1 << "x" << num2 << "=" << num1 * num2 << endl;
			
		}
		 cout << "Do you want to exit circlation (y/n) : " << endl;
			char exitnumberslatter = '\0';
			cin >> exitnumberslatter;
		if (exitnumberslatter == 'y')
				break;
	}

	system("pause");
	return 0;
}

运行结果如下图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33713592/article/details/83987253