900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言日记 10 if的嵌套语句(分支结构程序设计)

C语言日记 10 if的嵌套语句(分支结构程序设计)

时间:2020-04-28 14:34:43

相关推荐

C语言日记 10 if的嵌套语句(分支结构程序设计)

if语句的嵌套

同样的,在这里,我们又遇到(犯)了和之日记9相同的错误:

#include <iostream>

using namespace std;

int main()

{

int a, b;

cin >> a, b;

if (a == 1)

if(b==2)

a = a + 1;

cout << a;

}

一.

if(<表达式1>)

if(<表达式2>)语句

例:

#include <iostream>

using namespace std;

int main()

{

int a, b, c, d;

cin >> a >> b >> c >> d;

if (a == b)//表达式1

if (c == 1)//表达式2

d = d + 1;//语句1

cout << d;

}

结果:

结果说明:

只有“if (a == b)//表达式1”,“if (c == 1)//表达式2”同时满足时,

才执行“d = d + 1;//语句1” ,即:

二.

if (<表达式 1>)

if(<表达式2>)

语句1;

else

if (<表达式3>)

语句2;

例:

#include <iostream>

using namespace std;

int main()

{

int a, b, c;

cin >> a >> b >> c ;

if (a == 1)

if (b == 1)

cout << "1" << endl;

else

if (c == 1 )

cout << "2" <<endl;

}

这里,就涉及到嵌套配对问题。

嵌套配对问题:

书P42:

if (表达式 1)

if (表达式2)

语句 1;

else

语句 2;

其else与哪个if配对?

应理解为

if (表达式 1)

if (表达式2)

语句 1;

else

语句 2;

还是理解为

if (表达式 1)

if (表达式2)

语句 1;

else

语句 2;

转化为具体程序,即:

if (a==1)

if (b==1)

cout << 1 << endl;

else

cout << 2 << endl;

等价于

if (b == 1)

cout << 1 << endl;

else

cout << 2 << endl;

还是

if (a == 1)

if (b == 1)

cout << 1 << endl;

else

cout << 2 << endl;

书P42:

为了避免这种二义性,C++语言规定:

else 总是与它前面最近的未配对过的if迁配。

因此对上述例子应按后一种情况理解。

实践出真知:

有意思的是:

tm这两种编译方式最后结果输入一样的输入我们会得到同样的输出

也就是说,这两种方式在运行时没有任何区别。即:

cnmd

你tm把老子当傻逼是吧?

耍得老子团团转

当然,经过半天的费尽周折,这里作者想要表达的意思我们是明白了:

即:

对上面的if嵌套程序,

"认为else后的语句对应表示的是:

上面所有条件(两个if语句)都被满足(为真)

以外的所有情况

都执行的操作"

这样的理解方式是错的

如书P42所言:

C++语言规定:

else 总是与它前面最近的未配对过的if迁配。

(同理)同样的,对于前面我们最开始提到的(有关于嵌套)的:

二.

if (<表达式 1>)

if(<表达式2>)

语句1;

else

if (<表达式3>)

语句2;

例:

#include <iostream>

using namespace std;

int main()

{

int a, b, c;

cin >> a >> b >> c ;

if (a == 1)

if (b == 1)

cout << "1" << endl;

else

if (c == 1 )

cout << "2" <<endl;

}

结果:

画出流程图,即:

书P42例3-6:

#include <iostream>

using namespace std;

int main()

{

int a, b;

cout << "please input a,b: ";

cin>>a>>b;

if (a != b)

if (a > b)

cout << "a>b" << endl;

else

cout << "a<b" << endl;

else

cout << "a=b" << endl;

}

流程图如下:

书P43例3-7:

#include <iostream>

using namespace std;

int main()

{

int a, b;

cout << "please input a,b: ";

cin>>a>>b;

if (a > b) cout << "a>b" << endl;

else if (a < b) cout << "a<b" << endl;

else cout << "a=b" << endl;

}

流程图如下:

例3-8:

用条件表达式对例3-4重新编程。源程序:

#include <iostream>

using namespace std;

int main()

{

int a, b, max;

cout << "Please input two numbers: " << endl;

cin >> a >> b;

max = a > b ? a : b;

cout << "max=" << max << endl;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。