👨💻个人主页:@开发者-削好皮的Pineapple!
👨💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 削好皮的Pineapple! 原创
👨💻 收录于专栏:C++程序设计
⭐前言⭐
在C++编程中,选择结构和循环结构是非常重要的控制流程工具,它们使程序能够根据条件执行不同的操作或者重复执行特定的代码块。
🎶一、选择结构和if语句
if语句是用来判定所给定的条件是否满足,根据判定结果(真或假)决定执行给出的两种操作之一。
(一)if语句的形式
C++的if语句一般形式为
if(表达式)语句1
[else 语句2]
其中方括号中的内容是可选的,可以有也可以没有。语句1和语句2可以是简单的语句,如赋值语句、输出语句,也可以是复合语句,也可以是一个内嵌的if语句。
1.没有else部分
if(x>y) cout<<x<<endl;
2.包含else部分
if(x>y) cout<<x;
else cout<<y;
3.if语句包含else部分,其中的语句又是一个if语句。而这个内嵌的if语句的else部分中包含的语句又是一个内嵌的if语句,如此可以内嵌多层的一个if语句。
if(number>500) cost=0.15;
else if(number>500) cost=0.10;
else if(number>500) cost=0.75;
else if(number>500) cost=0.05;
else cost=0;
复合语句中可以定义变量,此变量只在本复合语句内有效。下面举例说明:
计算三角形的面积:
海伦公式:
p=(a+b+c)/2;
s=sqrt(p*(p-a)(p-b)(p-c))
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main() {
double a, b, c; //三角形的三条边
cout << "请输入a,b,c的值:" << endl;
cin >> a >> b >> c;
if (a + b > c && b + c > a && c + a > b) {
double p, area;
p = (a + b + c) / 2.0;
area = sqrt(p * (p - a) * (p - b) * (p - c));
cout << setiosflags(ios::fixed) << setprecision(4);
cout << "area=" << area << endl;
} else cout << "此三角形不存在!" << endl;
return 0;
}
运行结果如下图:
(二)if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:
if() 语句1
else 语句2
else
if() 语句3
else 语句4
注意:if与else的配对关系。else总是和它最上面最接近的、且未配对的if配对。
(三)条件运算符和条件表达式
条件运算符要求有3个操作对象,称为三目(元)运算符,它是C++中唯一的一个三目运算符。条件表达式的一般形式为
表达式1?表达式2:表达式3
条件运算符的执行顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
“max=(a>b)?a:b”的执行结果是将条件表达式的值赋给max。也就是将a和b二者中的大者赋给max。条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。
例子:输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。(输出结果豆豆hi小写)
#include<iostream>
using namespace std;
int main(){
char ch;
cin>>ch;
ch=(ch>'A'&&ch<='Z')?(ch+32):ch;
cout<<ch<<endl;
return 0;
}
运行结果如下图:
(四)多分支选择结构与switch语句
switch 语句是多分支选择语句,用来实现多分支选择结构。语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(90分以上为’A等,80~89分为B等,70-79分为’C等……);人口统计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存款分类等。
当然这些都可以用嵌套的语句来处理,但如果分支较多,则嵌套的语句层数多,程序就会冗长而且可读性降低。C++提供 switch 语句直接处理多分支选择,它的一般形式如下:
case 常量表达式1:语句1
case 常量表达式2:语句2
.........
case 常量表达式n:语句n
default:语句n+1
例如,要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现:
#include<iostream>
using namespace std;
int main() {
char grade;
cin >> grade;
switch (grade) {
case'A':cout<<"85~100\n"<<endl; break;
case'B':cout<<"70~84\n"<<endl; break;
case'C':cout<<"60~69\n"<<endl; break;
case'D':cout<<"60\n"<<endl; break;
default:cout << "error/n";
break;
}
return 0;
}
运行结果如下图:
(五)综合应用
编写程序,判断某一年是否为闰年。
闰年的判断条件:
能被4整除,并且不能被100整除
能被400整除的数
注意:以上两个条件满足一个即可
#include<iostream>
using namespace std;
int main() {
/*闰年的判断条件:
能被4整除,并且不能被100整除
能被400整除的数
注意:以上两个条件满足一个即可*/
int year;
cout << "请输入年份:" << endl;
cin >> year ;
if (year % 4 == 0) {
if (year % 100 != 0) {
cout << year << "是闰年" << endl;
}
}
if (year % 400 == 0)cout << year << "是闰年" << endl;
else cout << year << "不是闰年" << endl;
return 0;
}
运行结果如下图:
🎶二、循环结构和循环语句
(一)用while语句构成循环
指定的条件为真表达式为非0时,执行while语句中的内嵌语句即循环体其。
特点是:先判断表达式后执行语句while循环称为当行循环。
求1-100的整数和。
#include<iostream>
using namespace std;
int main() {
int i = 1, sum = 0;
while (i <= 100) {
sum = sum + i;
i++;
}
cout << "1-100的整数和为:"<<sum;
return 0;
}
运行结果如下图:
(二)用do-while语句构成循环
do-while语句的特点是:先执行循环体,然后判断循环体条件是否成立。
先执行一次指定的语句,然后判别表达式,当表达式的值为非零时,返回重新执行循环体语句,如此重复直到表达式的值等于零,为止此时循环结束。
求1-100的整数和。
#include<iostream>
using namespace std;
int main() {
int i = 1, sum = 0;
do{
sum=sum+i;
i++;
}while(i<=100);
cout << "1-100的整数和为:"<<sum;
return 0;
}
运行结果如下图:
(三)用for语句构成循环
for语句最常用的形式也是最容易理解的格式如下:
for(循环变量赋初值;循环条件;循环变量增值) 语句
for语句的三个表达式都可省略:
1.当第1个表达式时省略时,应在for语句之前给循环变量赋初值;
2.如果表达式2省略,即不判断循环条件,循环无终止地进行下去,也就是认为表达式2始终为真;
3.如果省略表达式3,此时应另外设法保证循环能正常的结束;
4.也可省略表达式1和表达式3,只有表达式2时只给循环条件。
3种循环:while循环、do while循环和for循环可以互相嵌套。
提前结束循环:break语句和continue语句。
break跳出循环体提前结束循环;
continue作用为结束本次循环。
例子:用下面的公式求Π的近似值。
Π/4=1-1/3+1/5-1/7+…
直到最后一项的绝对值小于10的-7次方为止。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main() {
/* 计算 π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
直到最后一项的绝对值小于10的-7次方为止。 */
int s = 1; // 符号变量,初始为正
double n = 1, t = 1, pi = 0; // n为分母,t为当前项的值,pi为近似π的值
// 循环直到最后一项的绝对值小于10的-7次方
while (fabs(t) > 1e-7) {
pi = pi + t; // 累加当前项到pi中
n = n + 2; // 更新分母,移动到下一项
s = -s; // 变换符号
t = s / n; // 计算下一项的值
}
pi = pi * 4; // π的近似值等于pi乘以4
// 输出π的近似值,保留6位小数
cout << "pi=" << setiosflags(ios::fixed) << setprecision(6) << pi << endl;
return 0;
}
运行结果如下图:
结束语🥇
以上就是C++程序设计
持续更新C++程序设计教程,欢迎大家订阅系列专栏🔥C++程序设计你们的支持!