- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 流程控制
4.1 复合语句
复合语句是用“{ }”括起来的一组语句,例如:
{ t=a;
a=b;
b=t;
}
该复合语句交换变量a,b的值,t是用于暂时保存中间值的辅助变量。一个复合语句称为一个块。另外复合语句中可以包含说明语句,例如:
{ int t;
t=a;
a=b;
b=t;
}
复合语句的一般形式为:
{
说明部分;
语句部分;
}
注意:① 复合语句中的右花括号“}”的后面没有分号;
② 一个复合语句在语法上等价于单个语句,凡一个语句能够出现的地方都能出现复合语句,换句话说,复合语句在逻辑上是一个整体;
③ 复合语句可以嵌套,即一个复合语句中还可以出现复合语句;
④ 复合语句中说明部分的变量,其作用范围(作用域)只限于该复合语句内部,在复合语句外无意义;
⑤ if子句和else子句以及while、for的循环体,在语法上均规定为单个语句,若需要多个语句,必须写成复合语句的形式。另外,函数体语法上也是一个复合语句,但复合语句可以嵌套,而函数体中不可以嵌套函数。
输入两个整数,按从小到大的顺序输出这两个数。
#include stdio.h
void main(void)
{ int a,b;
printf(“input a,b:\n”);
scanf(“%d%d”,a,b);
{ int t;
if (ab) { t=a;a=b;b=t;}
}
printf(“a=%d,b=%d\n”,a,b);
}
注意变量t的作用范围,若int t;前无{ }在语法上有错。
4.2 if语句
if语句也称为条件语句,它根据一个条件的真和假有选择地执行或不执行某个语句。
if语句的一般形式
if语句有两种形式
⑴ if格式:
if(表达式)语句1;
⑵ if-else格式:
if(表达式)语句1;
else语句2;
关于if语句的使用说明:
⑴ if和else是关键字,是if语句的标志。表达式用来选择条件,可以为任何表达式,表达式必须用括号括起来。
⑵ 语句1和语句2是任何单个语句(包括复合语句),分别称为if子句和else子句,语句1和语句2末尾必须有分号(复合语句除外)。
⑶ if语句中语句1的后面尽管有分号,但整个if语句(包括if-else形式)逻辑上是一个语句。
在前面我们举过一个例子,求a、b、c中最大值:
用条件运算符的形式为:
m=(ab)?a:b;
m=(mc)?m:c;
在功能上与下面使用if语句相同:
if(ab)
m=a;
else m=b;
if(mc)
m=c;
解方程ax+b=0,a和b从终端输入
#includestdio.h
void main(void)
{
float a,b,x;
printf(“input a,b:\n”);
scanf(“%f%f”,a,b);
if(!a)
printf(“error in input data\n”);
else
{
x=-b/a;
printf(“x=%.4f\n”,x);
}
}
如果将其中的else子句写成如下形式
else
x=-b/a;
printf(“x=%.4f\n”,x);
会发生什么情况?
因此正确地使用{}是写if语句时应特别注意的问题。
嵌套的if语句
当if子句或else子句又含有一个if语句时,则形成if语句的嵌套,称为嵌套的
if语句或称多重if语句。
例 求3个数中的最大值。
if(ab)
if(ac) max=a;
else max=b;
else if(bc) max=b;
else max=c;
printf(“max=%.2f\n”,max);
还可以用非嵌套的if语句实现
if(a=ba=c)
printf(“max=%.2f\n”,a);
if(b=ab=c)
printf(“max=%.2f\n”,b);
if(c=ac=b)
printf(“max=%.2f\n”,c);
对于嵌套的if语句,由于if 语句有两种形式,因此某些嵌套的if语句语义上可以有两种理解(二义性)。例如:
if(n0) if(n0)
if(ab) if(ab)
z=a; z=a;
else else
z=b; z=b;
上面两个程序片断相同,因为编译程序约定else与其前面最靠近的且未配对的if配对。因此
文档评论(0)