一文带你搞定C++语句

if 语句

1)语法:

if (表达式)

{

    // 表达式为真时执行的语句。

}

else

{

    // 表达式为假时执行的语句。

}

注意:

  • if (表达式)之间的空格可以不写。
  • 表达式必须使用括号。
  • 表达式可以是具体的值。
  • 表达式一般是关系运算和逻辑运算表达式,也可以是赋值运算或其它的表达式。
  • 不要把if(变量名==值)写成if(变量名=值)
  • 整个if语句可以没有else分支。
  • ifelse分支花括号内的代码如果只有一行,花括号可以不写;如果一行也没有,花括号一定要写;如果有多行,花括号一定要写,如果不写,除了第一行,其它的代码将不是if语句的一部分。
  • if (表达式)else后不能加分号,因为分号表示空语句。C++用分号作为一条语句结束的标志。如果在C++程序中不小心多写了一个分号,那么该分号会被当成一条空语句。)

2)示例


 嵌套使用 if 语句

1)嵌套使用if语句

if语句可以嵌套使用,实现多级(层)的条件判断(最多127层)。

语法:

if (表达式一)

    if (表达式二) 

    {

        // 表达式二为真时执行的语句。

    }

else

{

    // 表达式二为假时执行的语句。

    }

}

else

{

    // 表达式一为假时执行的语句。

}

2)示例

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。

int main()
{
	char sex;        // 性别(X-女,Y-男)。
	bool yz;         // 颜值(1-漂亮,0-不漂亮)。

	//提示用户输入sex
	cout << "请输入超女的性别(X-女,Y-男):";

	// 输入性别,存放在变量sex中。
	cin >> sex;

	// 判断性别,如果是女,流程继续,否则程序结束。
	if (sex == 'X')
	{
		// 显示“请输入颜值(1-漂亮,0-不漂亮):”的提示文字。
		cout << "请输入颜值(1-漂亮,0-不漂亮):";

		// 输入颜值,存放在变量中。
		cin >> yz;

		// 判断颜值
		if (yz == true)     // 漂亮。
		{
			cout << "哇!大美女!";
		}
		else
			;//这里是一个空语句
	}
	//性别为Y的输出信息
	else {
		cout << "男人别来沾边!";
	}
}

嵌套if语句的坑

嵌套使用if语句时候,会出现if与else的配对问题。

C++编译器处理该问题的原则是:else总是与前面最近if 配对。(就近原则)

如果要改变这种配对关系,可以使用花括号来确定新的配对关系。

if (sex == 'X')
	{
		if (yz == true)
			cout << "sex==X,yz==true\n";
	}
	else
		cout << "sex==Y,yz==true or false\n";

这里如果不仔细看,可能会认为else是与第二层的if匹配,但是由于加了花括号了,这里说明一下,程序中的花括号就表示了一个语句块,这里第二层的 if 就是一个语句块,else与最开始的 if 匹配。


多条件的if语句 

1)多条件的if语句

语法:

if (表达式一)

    // 表达式一为真时执行的语句。

}

else if (表达式二)

{

    // 表达式二为真时执行的语句。

}

else if (表达式三)

{

    // 表达式三为真时执行的语句。

}

……

else if (表达式n)

{

    // 表达式n为真时执行的语句。

}

else

{

    // 全部表达式都不为真时执行的语句。

}

注意:

  • 多条件的if语句本质上是嵌套的if语句。
  • 最多只能有127个条件分支。
  • 最后一个else可以没有。

三目运算

三目运算也叫条件运算或三元运算,可以实现简单if语句的功能,但是书写更简洁。

 语法: 表达式一 ? 表达式二 : 表达式三

计算达式的值如果为真,整个表达式的结果为表达式二的值,如果为假,整个表达式的结果为表达式三的值。

  int a,b,c;

  a=7;

  b=6;

  c=(a>b)?a:b;

等同于

  if (a>b) c=a;

  else c=b;

三目运算表达式可以嵌套使用,但是,过于复杂的三目运算表达式不方便理解。

switch语句

switch也是一种选择结构的语句,可以代替简单的多条件的if语句。

语法:

switch (表达式)

{

    case 值一:

       语句一;

       break;

    case 值二:

       语句二;

       break;

    ......

    case 值n:

       语句n;

       break;

    default:

       上述条件都不满足时执行的语句;

}

注意:

  • case后面必须是整数和字符,或者是结果为整数和字符的表达式,但不能使用变量。
  • default不是必须的,当没有default时,如果全部的case匹配失败,那么就什么都不执行。
  • 每个分支不要漏写break;语句。

while循环语句

语法:

while (表达式)

{

    语句块

}

先计算表达式的值,如果为真就执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真又执行一次语句块……,这个过程会一直重复,直到表达式的值为假时不再执行语句块

注意:

  • 如果表达式的值永远为真,那么将进入死循环,所以在循环中应该有改变表达式的值的方法。
  • 如果循环体中的语句块只有一行代码,大括号可以不书写。
  • 有疑问先放一边,在以后的课程中,会介绍循环的各种使用方法。

示例:

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。

int main()
{
	
	int n = 1;           // 编号

	while (n <= 10)
	{
		cout << "这是第" << n++ << "名同学" "<<endl;
	}
}

循环的跳转

breakcontinue两个关键字用于控制循环体中代码的执行流程。

break跳出(中止)当前循环语句。

continue回到当前循环语句的首部。

 continue是跳过此次循环,在上面代码中就是当不是5的倍数时跳过此次循环到下一次

这里你会发现控制台什么都没有输出,这里其实是当 n进入循环时,n++变成1,进入else的break中,直接结束循环。

 for循环语句

语法:

for (语句一 ; 表达式 ; 语句二)

{

    语句块

}

1循环开始,先执行语句,在整个循环过程中语句会被执行一次

2)计算表达式的值,如果为真,就执行一次循环体中的语句

3执行语句块后,执行一次语句

4)重复第2)步和第3),直到表达式的值为真才结束for循环

注意:

  • 不要纠结for循环与while循环的区别,它们本质上没有区别。
  • for循环一般需要一个相当于计数器的变量,在语句一中对它进行初始化,在语句二中进行计数操作。
  • for循环的语句一中,可以声明计数器变量。
  • 在for循环中,语句一表达式语句二都可以为空,for (;;)等同于while (true)
  • continuebreak两个关键字也可以用在for循环体中。
#include<iostream>
using namespace std;

int main()
{
    for(int i = 0;i < 10 ;i++)
        cout<< i << endl;
}

 嵌套使用循环

    // 在控制台输出九九乘法表。
	for (int ii=1; ii<=9; ii++)
	{
		for (int jj = 1; jj <= ii; jj++)
		{
			cout << ii << "*" <<  jj << "=" << ii*jj <<" ";
		}

		cout << endl;
	}

do…while循环语句

语法:

do

{

    语句块

} while (表达式);

功能与while语句类似,不同的是:

  • 进入循环时,先执行一次语句块,再计算表达式的值。
  • 循环的首部书写在循环的尾部,(表达式)后面还有一个分号。

goto语句

goto语句也称为无条件转移语句

goto的语法:goto 语句标号;

语句标号的语法:语句标号:

如果在程序中使用了goto,程序的流程将跳转到语句标号的位置,并执行它后面的代码。

其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,可以独占一行,标号后加半角冒号

语句标号用于标识语句的位置,与goto语句配合使用。

在实际开发中,goto语句容易造成程序流程的混乱,不方便理解调试也更麻烦,不建议使用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸福西西弗斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值