网站首页 > 基础教程 正文
4.1 选择结构
4.1.1 if语句
单行if
int n = 0;
cout << "Enter n :";
cin >> n;
if (n > 10)
{
cout << "n is bigger than 10" << endl;
}
return 0;
if后不加分号,不然没有选择作用
注意:如果if里面执行的语句只有一行,那么可以省略花括号,如果多于一行,必须加花括号,否则只会执行第一行
比如:
int n = 0;
cout << "Enter n :";
cin >> n;
if (n > 10)
cout << "n is bigger than 10" << endl;
cout << "n比10大" << endl;
无论输入n是什么数,n比10大这行代码都会被执行,因为这句代码不在if里面
- 多行if
int n = 0;
cout << "Enter n :";
cin >> n;
if (n > 10)
{
cout << "n is bigger than 10" << endl;
}
else
{
cout << "n is NOT bigger than 10" << endl;
}
return 0;
if语句的条件不满足就走else语句
- 多条件if语句
int n = 0;
cout << "Enter n :";
cin >> n;
if (n > 10)
{
cout << "n is bigger than 10" << endl;
}
else if (n > 5)
{
cout << "n is bigger than 5 and smaller than 10" << endl;
}
else if (n > 0)
{
cout << "n is bigger than 0 and smaller than 5" << endl;
}
else
{
cout << "n < 0" << endl;
}
return 0;
可以有if ... else if。即后面的else没有也可以
嵌套if语句---在一个范围内更精确的选择
int n = 0;
cout << "Enter n :";
cin >> n;
if (n > 100)//在n > 100的访问内进行筛选
{
if (n > 200)
{
cout << "n > 200" << endl;
}
else if (n > 150)
{
cout << "n > 150" << endl;
}
else
{
cout << "n > 100 && n <= 150" << endl;
}
}
else if (n > 50)
{
cout << "n <= 100 && n > 50" << endl;
}
else
{
cout << "n <= 50" << endl;
}
在第一个if下在进行选择
如果一个判断可以写成并列的两个if,也可以写成if ... else if。如果不复杂的话就用后者,因为后者的执行效率高
4.1.2 三目运算符
语法:表达式1 ? 表达式2 : 表达式3
解释:如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
int a = 10;
int b = 20;
int c;
c = (a > b ? a : b);
cout << "c=" << c << endl;
结果是c = 20
就是把a,b中较大的值赋给c,然后打印c
int a = 10;
int b = 20;
(a > b ? a : b) = 100;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
结果是a=10,b=100 (先判断a,b大小,再把其中一个赋值100并打印)
4.1.3 switch语句
基本结构
switch(表达式)
{
case 结果一 :
执行语句;
break;
case 结果二 :
case 结果三 :
执行语句;
break;
default
执行语句;
break;
}
每一行代码下都要加break;不然会一直运行下去
e.g.
int n;
cin >> n;
switch (n)
{
case 10:
case 9:
cout << "n == 9 || n == 10" << endl;
break;
default:
cout << "n != 9 && n != 10" << endl;
break;
}
if 与 switch 的区别? switch缺点:判断分支事只能是整型或者字符型 不可以是一个区间 switch优点:结构清晰,执行效率高
4.2 循环语句
4.2.1 while循环语句
满足循环条件(只要循环条件结果为真),执行循环语句
int a = 0;
while (a <= 9)
{
cout << a << endl;
a++;
}
输出结果为0-9
4.2.2 do...while循环语句
与while的区别是先执行依次循环语句,再判断循环条件
do
{
statement(s);
}while( condition );
4.2.3 for循环语句
for(起始表达式;条件表达式;末尾循环体){循环语句;}
起始表达式:不参加循环,用于给变量赋值,创建一个变量的声明等;
末尾循环体:第一次循环结束后的操作,然后再判断循环条件
#include<iostream>
using namespace std;
int main()
{
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int i = 0;
for ( ; ; )
{
if(i >= 10)
{
break;
}
cout << i << endl;
i++;
}
return 0;
}
其实这段代码和上面的一样,只要for循环语句的基本结构还在就行,里面的东西可以放外面
4.2.4 嵌套循环
在循环体中再嵌套一些循环,解决一些实际问题
#include<iostream>
using namespace std;
int main()
{
//外侧循环
for (int a = 1; a <= 10; a++)
{
//内层循环
for (int i = 1; i <= 10; i++)
{
cout << "* ";
}
cout << endl;
}
return 0;
}
外层循环一次,内层循环一周--天上一天,人间一年
两层循环最好不要用一样的变量
运行结果:
可以一直循环下去
#include<iostream>
using namespace std;
int main()
{
for (int j = 1; j <= 10; j++)
{
for (int a = 1; a <= 10; a++)
{
for (int i = 1; i <= 10; i++)
{
cout << "* ";
}
cout << endl;
}
cout << endl;
}
return 0;
}
这就是三维的了
运行结果如下
4.3 跳转语句
4.3.1 break语句
用于跳出选择或者循环结构
使用时机:
- 出现在switch条件语句中,终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
示例1
#include<iostream>
using namespace std;
int main()
{
cout << "请选择副本难度" << endl;
cout << "1.普通" << endl;
cout << "2.中等" << endl;
cout << "3.困难" << endl;
int i = 0;//创建选择结果的变量
cin >> i;
switch (i)
{
case 1:
cout << "普通" << endl;
break;
case 2:
cout << "中等" << endl;
break;
case 3:
cout << "困难" << endl;
break;
}
return 0;
}
示例2
#include<iostream>
using namespace std;
int main()
{
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break;//等于5退出循环
}
cout << i << endl;
}
return 0;
}
示例3
#include<iostream>
using namespace std;
int main()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
break;//退出内层循环
}
cout << "* ";
}
cout << endl;
}
return 0;
}
结果:
利用break退出内层循环,不影响外层循环
4.3.2 continue语句
在循环语句中,终止本次循环中余下的语句
开始下一次循环
#include<iostream>
using namespace std;
int main()
{
for (int i = 0; i <= 100; i++)
{
//如果是奇数输出,偶数不输出
if (i % 2 == 0)//偶数特征
{
continue;
}
cout << i << endl;
}
return 0;
}
输出结果为1-100中全部的奇数
如果把continue换成break,则什么都不会输出
4.3.3 goto语句
无条件跳转语句
语法:goto 标记;(标记一般大写)FLAG
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记位置
#include<iostream>
using namespace std;
int main()
{
cout << "1.xxx" << endl;
cout << "2.xxx" << endl;
goto FLAG;
cout << "3.xxx" << endl;
cout << "4.xxx" << endl;
FLAG: //注意是冒号,此处为标记点
cout << "5.xxx" << endl;
return 0;
}
输出结果
相当于使用了传送,从goto 直接到标记点
标记点在if里面可能很好用
不推荐用,因为会破坏结构
所有的goto语句都可以被替换成无goto的语句,只不过麻烦些
换言之:goto语句在C++是非必须的
#include<iostream>
using namespace std;
int main()
{
int i;
FLAG:
cin >> i;
if (i >= 10)
{
goto FLAG;
}
cout << i << endl;
return 0;
}
这个只能输出小于10的数,可以用if语句替代
猜你喜欢
- 2024-11-11 C++经典算法问题:背包问题(迭代+递归算法)!含源码示例
- 2024-11-11 C++进阶教程:C#嵌套循环 c++嵌套循环break
- 2024-11-11 C++经典算法 穷举法 穷举算法的优点
- 2024-11-11 C++数据结构-- 递归 排序 c++使用递归函数实现全排列
- 2024-11-11 如何使用c++发送window消息通知 c++怎么发给别人
- 2024-11-11 C++ replace函数-C++字符串替换函数
- 2024-11-11 C++学习:循环练习题(一) c++循环结构例题解析
- 2024-11-11 C/C++最细循环解析 c++循环结构23道题
- 2024-11-11 网络编程——C++实现socket通信(TCP)
- 2024-11-11 C++ GESP 2023年6月真题 c++历年真题解析
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)