文章目录
一、程序流程结构
C/C++中有三种基本程序运行结构:顺序结构、选择结构、循环结构。
1.顺序结构: 程序按照从上到下的顺序,依次执行代码,不会发生跳转。
2.选择结构: 程序分为多条不同的路,根据条件判断是否满足,再有选择性的执行相应的代码。
3.循环结构: 程序根据条件判断是否满足,如果满足条件,会重复执行相同的某段代码。
二、选择结构
1. if语句
作用: 判断条件,有选择性的执行相应的代码语句。
if语句一共有三种形式存在:
(1)单分支
语法:
if (条件){
执行语句;
}
if--如果,判断条件的意思。判断为真(true),则执行语句;判断为假(false),则不执行语句。
流程图:
示例:
// 判断成绩:60分以上及格,85分以上优秀,60分以下不及格
#include<iostream>
using namespace std;
int main(){
int score;
cout << "请输入你的成绩:";
cin >> score;
if (score<60){ // 如果分数小于60,输出不及格
cout << "很遗憾,你没有及格......" << endl;
}
if (60<=score && score<85){ // 如果分数大于等于60 并且 分数小于85,输出及格
//注意:此处表示60<=score<85,但在C++中,不能直接支持链式比较,需要使用逻辑运算符进行连接
cout << "恭喜你,及格了!" << endl;
}
if (score>=85){ // 如果分数大于等于85,输出优秀
cout << "太棒了,你的成绩很优秀!" << endl;
}
return 0 ;
}
/**
运行效果:
1. 输入成绩:59,if语句进行判断,成绩小于60,输出:“很遗憾,你没有及格”
2. 输入成绩:61,if语句进行判断,成绩大于等于60 并且 小于85,输出:“恭喜你,及格了”
3. 输入成绩:85,if语句进行判断,成绩大于等于85,输出“太棒了,你的成绩很优秀”
**/
(2)双分支
语法:
if (条件){
执行语句1;
}else{
执行语句2;
}
if--如果,else--否则
判断条件,如果条件为真(true),则执行语句1,否则(false)执行语句2。
流程图:
示例:
// 判断成绩录取:某校录取分数线为500分,达到分数线即可录取成功,否则录取失败。
#include<iostream>
using namespace std;
int main(){
int score;
cout << "请输入你的成绩:";
cin >> score;
if (score>=500){ // 如果分数大于等于500,输出录取成功
cout << "恭喜你,录取成功!" << endl;
}else{ // 否则,输出录取失败
cout << "很遗憾,录取失败!" << endl;
}
return 0 ;
}
/**
运行效果:
1.输入成绩:500,判断成绩满足条件大于等于500,输出:”恭喜你,录取成功!“
2.输入成绩:499,判断成绩不满足条件大于500,输出:”很遗憾,录取失败!“
**/
(3)多分支
语法:
if (条件1){
执行语句1;
}else if (条件2){
执行语句2;
}else{
执行语句3;
}
if--如果,else if--否则如果,else--否则
判断条件1,如果条件为真(true),则执行语句1;否则如果满足条件2,则执行语句2;否则(false)执行语句3。
流程图:
示例:
// 判断成绩:60分以上及格,85分以上优秀,60分以下不及格
// 可以对比单分支,查看区别。不同写法,相同效果,多分支会更简便。
// 注:else if可以根据具体条件而定,如果有N个条件,则可以使用N个else if。
#include<iostream>
using namespace std;
int main(){
int score;
cout << "请输入你的成绩:";
cin >> score;
if (score<60){ // 如果分数小于60,输出不及格
cout << "很遗憾,你没有及格......" << endl;
}else if (60<=score && score<85){ // 否则如果分数大于等于60 并且 分数小于85,输出及格
cout << "恭喜你,及格了!" << endl;
}else{ // 否则,输出优秀
cout << "太棒了,你的成绩很优秀!" << endl;
}
return 0 ;
}
/**
运行效果:
1. 输入成绩:59,if语句进行判断,成绩小于60,输出:“很遗憾,你没有及格”
2. 输入成绩:61,if语句进行判断,成绩大于等于60 并且 小于85,输出:“恭喜你,及格了”
3. 输入成绩:85,if语句进行判断,成绩大于等于85,输出“太棒了,你的成绩很优秀”
**/
练习一 偶数
题目介绍: 读取一个整数a,如果a为偶数在屏幕上输出"偶数",否则输出"奇数"。
样例输入: 22
样例输出: 偶数
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if (a%2==0){ // 如果 a除以2的余数为0,则输出”偶数“
cout << "偶数";
}
return 0 ;
}
练习二 判断闰年
题目介绍: 输入一个年份(整数),判断输入的是不是闰年,并输出结果。闰年判断条件:能被4整除且不能被100整除或者能被400整除。
样例输入1: 2008
样例输出1: 2008是闰年
样例输入2: 2009
样例输出2: 2009不是闰年
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
int year;
cin >> year;
if (year%4==0 && year%200!=0) || (year%400=0){
cout << year << "是闰年" << endl;
}else{
cout << year << "不是闰年" << endl;
}
return 0 ;
}
练习三 上海一日游
题目介绍: “上海一日游”的收费标准为:5 人以内(含 5 人)按散客标准,每人 300 元;超过 5 人,按团体标准,每人 280 元。输入人数n,输出旅游总费用。
样例输入: 9
样例输出: 2520
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
if (n<=5){
cout << n*300 << endl;
}else{
cout << n*280 << endl;
}
return 0 ;
}
2. if语句嵌套
在if语句中,还可以继续嵌套if语句,以达到更精准的判断。
示例:
题目介绍: 做一个高考录取系统,二本录取分数线为400分,一本录取分数线为500分,输入一个分数,判断分数是否达到录取分线,若达到则输出相应的录取结果,否则输出未被录取。
样例输入1: 401
样例输出1: 恭喜你,二本已录取
样例输入2: 501
样例输出2: 恭喜你,一本已录取
样例输入3: 399
样例输出3: 很遗憾,未被录取
#include<iostream>
using namespace std;
int main(){
int score;
cin >> score;
if (score>=400){
if(score<500){
cout << "恭喜你,二本已录取" << endl;
}else{
cout << "恭喜你,一本已录取" << endl;
}
}else{
cout << "很遗憾,未被录取" << endl;
}
return 0 ;
}
练习一 体育考试
题目介绍: 体育考试中,每个学生要考两个项目。男生必考的是1000米,女生必考的是800米 。
另外一个项目根据座位的单双号决定,男生单号跳高,双号跳远。女生单号跳绳,双号仰卧起坐。
程序输入b(男生)或g(女生)和座位号,输出要参加的项目。
样例输入: b 12
样例输出: 1000m 跳远
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
char sex;
int n;
cin >> sex >> n;
if (sex=='b'){
if (n%2==0){
cout << "1000m 跳远" << endl;
}else{
cout << "1000m 跳高" << endl;
}
}else{
if (n%2==0){
cout << "800m 仰卧起坐" << endl;
}else{
cout << "800m 跳绳" << endl;
}
}
return 0 ;
}
练习二 完美数字
题目介绍: 一个数字可以被自身所有位上非0数字整除,那么这个数字被称为完美数字。例如:132可以分别被1、2、3整除,则132是完美数字。
输入一个三位整数,判断其是否为完美数字。
样例输入: 132
样例输出: 132是完美数字
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
int n,a,b,c;
cin >> n;
a = n/100; // n的百位数:整数相除结果取整,三位数除以100得到百位数
b = (n%100)/10; // n的十位数:三位数除以100的余数为后两位数,再以余数除以10得到十位数
c = n%10; // n的个位数:三位数除以10的余数为十位数
if (n%a==0){
if (n%b==0){
if(n%c==0){
cout << n << "是完美数字" << endl;
}
}
}
return 0 ;
}
3.switch语句
作用: 可执行多条分支语句
语法:
switch(表达式) // 根据表达式的结果,判断执行哪条分支语句
{
case 结果1:执行语句;break; // 如果是结果1,则执行该语句,执行后退出分支
case 结果2: 执行语句;break; // 如果是结果2,则执行该语句,执行后退出分支
... // 有多少结果就可以有多少分支
default:执行语句;break; // 如果以上结果都不满足,则执行默认语句,执行后退出分支
}
注意:每个分支语句后面必须加上break(退出),否则执行语句会出错
示例:
题目介绍: 假设今天星期一,程序读入整数n,输出n天后是星期几。
样例输入: 8
样例输出: 8天后为星期二
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
switch(n%7){ // 判断n除以7的余数结果
case 0:cout << n << "天后是星期一" << endl;break; // 结果=0,是星期一
case 1:cout << n << "天后是星期二" << endl;break; // 结果=1,是星期二
case 2:cout << n << "天后是星期三" << endl;break; // .....
case 3:cout << n << "天后是星期四" << endl;break;
case 4:cout << n << "天后是星期五" << endl;break;
case 5:cout << n << "天后是星期六" << endl;break;
default:cout << n << "天后是星期天" << endl;break;
}
return 0 ;
}
练习一 计算器
题目介绍: 编写代码实现计算器的+、-、*、/功能。程序输入两个要运算的数字(浮点类型)和运算符号,输出运算结果。当输入非法符号时,需要提示“非法输入”。
样例输入: 1.5 * 2
样例输出: 3
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------
#include<iostream>
using namespace std;
int main(){
double a,b;
char c;
cin >> a >> c >> b;
switch(c){
case '+':cout << a+b << endl;break;
case '-':cout << a-b << endl;break;
case '*':cout << a*b << endl;break;
case '/':
if (b!=0){ // 判断b是否为0,不为0,则进行除法计算
cout << a/b << endl;
}break;
default:cout << "非法输入" << endl;break; // b为0,执行默认语句,输出"非法输入"
}
return 0 ;
}
4. 三目运算
作用: 简化选择结构代码,实现简单的判断
语法: 表达式1 ? 表达式2 : 表达式3
说明: 如果表达式1的值为真,则执行表达式2,并返回表达式2的结果
如果表达式1的值为假,则执行表达式3,并返回表达式3的结果
示例:
#include<iostream>
using namespace std;
int main(){
int a=10,b=20,c=0;
c = (a>b ? a:b); // 如果a>b,那么c=a,否则c=b
cout << "c=" << c << endl; // 输出结果:20
// 需要注意:在C++中,三目运算返回结果的是一个变量,可以用来进行赋值
(a>b ? a:b) = 100; // 如果a>b,返回a,则a=100;否则返回b,则b=100
cout << "a=" << a << endl; //输出结果:10
cout << "b=" << b << endl; // 输出结果:100
return 0 ;
}
专栏和博客不断更新中,欢迎关注哦~