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++中实现分支结构的基本方法,灵活运用语句来达到不同的流程控制的目的。