目录
一、if…else if…else
循环这里写过代码的都知道吧,直接上案例,熟悉一个 C++ 风格的判断语法:
#include <iostream>
using namespace std;
int main() {
float num1 = 0, num2 = 0, result;
std::cout << "请输入第一个数字:";
std::cin >> num1;
std::cout << "请输入第二个数字:";
std::cin >> num2;
char mode_num = '\0';
std::cout << "请输入计算类型(+ - * /)" << std::endl;
std::cin >> mode_num;
if (mode_num == '+')
result = num1 + num2;
else if (mode_num == '-')
result = num1 - num2;
else if (mode_num == '*')
result = num1 * num2;
else if (mode_num == '/')
result = num1 / num2;
else
result = -1;
std::cout << "计算结果:" << result << std::endl;
return 0;
}
输出:
请输入第一个数字:11
请输入第二个数字:22
请输入计算类型(+ - * /)
*
计算结果:242
二、使用 switch-case 进行条件处理
语法规则:
switch(expression){
case constant-expression :
statement(s);
break; // 可选的
case constant-expression :
statement(s);
break; // 可选的
// 您可以有任意数量的 case 语句
default : // 可选的
statement(s);
}
其中:expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
#include <iostream>
using namespace std;
char get_source_level(int stu_source) {
if (stu_source >= 90)
return 'A';
else if (stu_source >= 80)
return 'B';
else if (stu_source >= 60)
return 'C';
else
return 'D';
}
int main() {
int stu_source = 0;
std::cout << "请输入你的分数:";
std::cin >> stu_source;
char source_level = get_source_level(stu_source);
switch (source_level) {
case 'A' :
cout << "很棒!" << endl;
break;
case 'B':
cout << "Super Cool!" << endl;
break;
case 'C':
cout << "勉强及格" << endl;
break;
case 'D':
cout << "不通过" << endl;
break;
default:
cout << "无效" << endl;
};
return 0;
}
首先先实现了一个函数 get_source_level 可以输入数字来判断等级,main() 函数则使用的是 switch 来通过等级得到对应的 “赞美”。
下面这个程序可以通过输入周几可以得到是以哪颗星星命名的,一个比较好的枚举 + switch 小案例。
#include <iostream>
using namespace std;
int main()
{
enum DaysOfWeek
{
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
cout << "Find what days of the week are named after!" << endl;
cout << "Enter a number for a day (Sunday = 0): ";
int dayInput = Saturday; // 没有输入就是周日
cin >> dayInput;
switch(dayInput)
{
case Sunday:
cout << "Sunday was named after the Sun" << endl;
break;
case Monday:
cout << "Monday was named after the 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;
default:
cout << "输入错误,请重新输入。" << endl;
break;
}
return 0;
}
三、goto 循环
直接先看一个 goto 案例:
#include <iostream>
using namespace std;
int main() {
Start:
int Num1 = 0, Num2 = 0;
cout << "请输第入一个数字:";
cin >> Num1;
cout << "请输入第二个数字:";
cin >> Num2;
cout << Num1 << " x " << Num2 << " = " << Num1 * Num2 << endl;
cout << Num1 << " + " << Num2 << " = " << Num1 + Num2 << endl;
char repeat = 'y';
cout << "是否选择退出程序?(y/n)" << endl;
cin >> repeat;
if (repeat == 'n')
goto Start;
cout << "Goodbye!" << endl;
return 0;
}
输出:
请输第入一个数字:11
请输入第二个数字:22
11 x 22 = 242
11 + 22 = 33
是否选择退出程序?(y/n)
n
请输第入一个数字:11
请输入第二个数字:22
11 x 22 = 242
11 + 22 = 33
是否选择退出程序?(y/n)
y
Goodbye!
程序可以让用户输入两个数字,然后输入计算结果后,用户有两个选择,是否需要再次计算或者直接退出程序。这种场景就非常适合 goto 但是前辈们经验提醒我们,
不推荐使用 goto 语句来编写循环,因为大量使用 goto 语句将导致代码的执行流程无法 预测,即不按特定的顺序从一行跳转到另一行;在有些情况下,也可能导致变量的状态无法预测。
四、while 循环
while(expression)
{
// Expression evaluates to true
StatementBlock;
};
只要 expression 为 true,就将反复执行该语句块。因此,必须确保 expression 在特定条件下将为 false, 否则 while 循环将永不停止。
上案例:
#include <iostream>
using namespace std;
int main() {
char userSelection = 'm'; // initial value
while (userSelection == 'm') {
int num1 = 0, num2 = 0;
cout << "输入第一个数字:";
cin >> num1;
cout << "输入第二个数字:";
cin >> num2;
cout<<num1<<"x"<<num2<<"="<<num1*num2<<endl;
cout<<num1<<"+"<<num2<<"="<<num1+num2<<endl;
cout << "输入 x 退出程序" << endl;
cin >> userSelection;
}
return 0;
}
然后再 while 另外一种语法
do...while
某些情况需要将代码放在循环中,并确保他们至少执行一次,也就是说循环中的代码会先执行,然后再根据条件判断是否继续执行。
#include <iostream>
using namespace std;
int main() {
char userSelection = 'm'; // initial value
do {
int num1 = 0, num2 = 0;
cout << "输入第一个数字:";
cin >> num1;
cout << "输入第二个数字:";
cin >> num2;
cout << num1 << "x" << num2 << "=" << num1 * num2 << endl;
cout << num1 << "+" << num2 << "=" << num1 + num2 << endl;
cout << "输入 x 退出程序" << endl;
cin >> userSelection;
} while (userSelection == 'm');
return 0;
}
语法也非常简单,稍微修改一下即可。
五、for 循环
请看下方案例:
#include <iostream>
using namespace std;
int main() {
// 定义一个常量
const int array_len = 5;
// 初始化一个数组
int my_nums[array_len] = {11, 22, 33, 44, 55};
// for 循环遍历
for (int counter = 0; counter < array_len; ++counter)
cout << "数组第 " << counter + 1 << " 个元素是:" << my_nums[counter] << endl;
return 0;
}
在 for 循环中的条件判断中,我们使用递增运算符,还记得 ++ num 与 num ++ 的区别吗?
六、continue 和 break
重点介绍一下 C++ 中的语法,用法都清楚。
#include <iostream>
using namespace std;
int main()
{
for(;;) // an empty 'for' creating an infinite loop
{
cout << "Enter two integers: " << endl;
int num1 = 0, num2 = 0;
cin >> num1;
cin >> num2;
cout << "Do you wish to correct the numbers? (y/n): ";
char changeNumbers = '\0';
cin >> changeNumbers;
if (changeNumbers == 'y')
continue; // restart the loop!
cout << num1 << " x " << num2 << " = " << num1 * num2 << endl;
cout << num1 << " + " << num2 << " = " << num1 + num2 << endl;
cout << "Press x to exit or any other key to recalculate" << endl;
char userSelection = '\0';
cin >> userSelection;
if (userSelection == 'x')
break; // exit the infinite loop
}
cout << "Goodbye!" << endl;
return 0;
}
七、实现九九乘法表
#include <iostream>
using namespace std;
int main() {
int i, j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
cout << j << "*" << i << "=" << j * i << " ";
}
cout << endl;
}
}