1. C++语句概述
在C++编程中,语句是程序的基本构成单元。语句按照顺序执行,可以实现程序的流程控制、变量赋值等功能。
1.1 程序的基本结构
一个完整的C++程序由多个语句组成,每个语句以分号";"结尾。程序的入口是main函数,其基本结构如下:
#include <iostream> using namespace std; int main() { // 语句1 // 语句2 // ... // 语句n return 0; }
其中,#include 表示引用了输入输出流的库,using namespace std;表示使用了标准命名空间。程序从main函数开始执行,执行完所有语句后返回0。
1.2 C++中的语句
C++中常见的语句包括赋值语句、条件语句、循环语句等。赋值语句用于给变量赋值,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码。
2. if语句实现分支结构
2.1 问题的提出
在编写程序时,经常需要根据不同的条件执行不同的代码块。这时可以使用if语句实现分支结构。
2.2 if语句的基本结构
if语句的基本结构如下:
if (条件) { // 条件为真时执行的代码块 }
其中,条件为真时执行的代码块可以是一个语句或多个语句的块。
【例2-1】输入两个整数,输出其中较大值
#include <iostream> using namespace std; int main() { int a, b; cout << "请输入两个整数:" << endl; cin >> a >> b; if (a > b) { cout << "较大值是:" << a << endl; } else { cout << "较大值是:" << b << endl; } return 0; }
在上述示例中,根据输入的两个整数a和b的大小关系,输出较大值。当a大于b时,执行if条件为真的代码块,否则执行else条件为真的代码块。
【例2-2】输入两个整数,输出其中较大值和较小值
#include <iostream> using namespace std; int main() { int a, b; cout << "请输入两个整数:" << endl; cin >> a >> b; if (a > b) { cout << "较大值是:" << a << endl; cout << "较小值是:" << b << endl; } else { cout << "较大值是:" << b << endl; cout << "较小值是:" << a << endl; } return 0; }
在上述示例中,根据输入的两个整数a和b的大小关系,分别输出较大值和较小值。当a大于b时,执行if条件为真的代码块,否则执行else条件为真的代码块。
2.3 嵌套语句的使用
在if语句中,可以嵌套使用更多的if语句,以实现更复杂的分支结构。
【例2-3】输入任意三个整数a、b、c,输出其中最大的数
#include <iostream> using namespace std; int main() { int a, b, c; cout << "请输入三个整数:" << endl; cin >> a >> b >> c; if (a >= b) { if (a >= c) { cout << "最大值是:" << a << endl; } else { cout << "最大值是:" << c << endl; } } else { if (b >= c) { cout << "最大值是:" << b << endl; } else { cout << "最大值是:" << c << endl; } } return 0; }
在上述示例中,根据输入的三个整数a、b、c的大小关系,输出最大值。通过嵌套的if语句,先比较a和b的大小,再比较结果与c的大小,从而找到最大值。
2.4 使用if语句实现多分支
除了使用嵌套语句,还可以使用多个if语句实现多分支结构。
【例2-4】输出成绩等级
#include <iostream> using namespace std; int main() { int score; cout << "请输入成绩:" << endl; cin >> score; if (score >= 90) { cout << "成绩等级为:优秀" << endl; } else if (score >= 80) { cout << "成绩等级为:良好" << endl; } else if (score >= 70) { cout << "成绩等级为:中等" << endl; } else if (score >= 60) { cout << "成绩等级为:及格" << endl; } else { cout << "成绩等级为:不及格" << endl; } return 0; }
在上述示例中,根据输入的成绩score输出对应的等级。根据不同的成绩范围,使用多个if条件语句判断成绩等级。
2.5 综合实例
【例2-5】计算指定月份的天数
#include <iostream> using namespace std; int main() { int year, month; cout << "请输入年份和月份:" << endl; cin >> year >> month; int days; if (month == 2) { // 判断闰年 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { days = 29; } else { days = 28; } } else if (month == 4 || month == 6 || month == 9 || month == 11) { days = 30; } else { days = 31; } cout << year << "年" << month << "月有" << days << "天" << endl; return 0; }
在上述示例中,根据输入的年份year和月份month计算该月的天数。根据月份的不同,使用if条件语句判断天数。
【例2-6】求一元二次方程的根
#include <iostream> #include <cmath> using namespace std; int main() { double a, b, c; cout << "请依次输入一元二次方程的系数a、b、c:" << endl; cin >> a >> b >> c; double delta = b * b - 4 * a * c; if (delta > 0) { cout << "方程有两个不同的实根:" << endl; double x1 = (-b + sqrt(delta)) / (2 * a); double x2 = (-b - sqrt(delta)) / (2 * a); cout << "x1 = " << x1 << endl; cout << "x2 = " << x2 << endl; } else if (delta == 0) { cout << "方程有两个相等的实根:" << endl; double x = -b / (2 * a); cout << "x = " << x << endl; } else { cout << "方程无实根" << endl; } return 0; }
在上述示例中,根据输入的一元二次方程的系数a、b、c计算方程的根。根据判别式delta的不同,使用if条件语句判断根的情况。
3. switch语句实现多分支结构
3.1 问题的提出
在一些情况下,我们需要根据不同的取值选择不同的代码分支执行。这时可以使用switch语句实现。
3.2 switch语句的一般结构
switch语句的一般结构如下:
switch (表达式) { case 常量1: // 匹配常量1时执行的代码块 break; case 常量2: // 匹配常量2时执行的代码块 break; ... default: // 所有case都不匹配时执行的代码块 break; }
其中,表达式的值将与各个case后的常量进行比较,匹配时将执行对应的代码块。如果没有匹配的case,将执行default后的代码块。
【例3-1】用switch语句输出成绩的等级
#include <iostream> using namespace std; int main() { int score; cout << "请输入成绩:" << endl; cin >> score; switch (score / 10) { case 10: case 9: cout << "成绩等级为:优秀" << endl; break; case 8: cout << "成绩等级为:良好" << endl; break; case 7: cout << "成绩等级为:中等" << endl; break; case 6: cout << "成绩等级为:及格" << endl; break; default: cout << "成绩等级为:不及格" << endl; } return 0; }
在上述示例中,根据输入的成绩score输出对应的等级。根据成绩的不同,使用switch语句根据分数段进行匹配,并输出对应的等级。
以上是关于C++语句实现分支结构的学习笔记,包括if语句和switch语句的使用方法和示例。通过学习这些内容,可以掌握C++中实现分支结构的基本方法,灵活运用语句来达到不同的流程控制的目的。