c语言中构成标识符的两个条件,2019-02-21计算机二级C语言程序设计之选择结构

参考资料:高教版《全国计算机等级考试二级教程——C语言程序设计》、《21天学通C语言》

关系运算和逻辑运算

C语言的逻辑值

在C语言中,用非0表示“真”,用0表示“假”。

关系运算符和关系表达式

所谓关系运算实际上是“比较运算”,即进行两个数的比较,判断比较的结果是否符合指定的条件。

C语言的关系运算符

C语言提供了6种关系运算符,它们分别是:

<(小于)

<=(小于或等于)

> (大于)

>=(大于或等于)

==(等于)

!=(不等于)

注意:由两个字符组成的运算符之间不能有空格。

关系运算符是双目运算符,并且具有自左至右的结合性。

关系表达式及关系表达式的值

由关系运算符构成的表达式,称为关系表达式。关系表达式的计算结果为“逻辑值”,只有两种可能:真(1)或假(0)。

逻辑运算符和逻辑表达式

C语言的逻辑运算符

C语言提供了3种逻辑运算符,分别是:

&&(与)

||(或)

!(非)

其中,&&和||为双目运算符,!为单目运算符并且出现在对象的左边。

逻辑表达式和逻辑表达式的值

由逻辑运算符和运算对象组成的表达式称为逻辑表达式。逻辑运算的对象可以是C语言中任意合法的表达式。

如果表达式中使用了逻辑运算符,那么该表达式的计算结果取决于其运算对象。逻辑表达式的运算结果或者为1(真),或者为0(假)。

当a和b为任意合法表达式时,逻辑运算规则如下表:

表达式

计算结果

a&&b

当且仅当a与b都为真时,表达式为真(1);否则表达式为假(0)。

a||b

a和b有一个为真,表达式为真(1);a和b都为假,表达式为假(0)。

!a

如果a为真,表达式为真(0);如果a为假,表达式为假(1)。

if语句和用if语句构成的选择结构

if语句

if语句的基本格式是,对表达式求职并根据求值结果命令程序执行特定内容。if语句的格式如下:

if (表达式)

语句

如果表达式为真,就执行语句;如果表达式为假,则不执行语句。可以认为,是否执行语句取决于表达式的结果。

通过使用复合语句或块,if语句可以控制多条语句的执行。

else子句

if语句可以包含else子句,方法如下:

if (表达式)

语句1;

else

语句2;

如果表达式计算结果为真,则执行语句1。如果表达式计算结果为假,控制将转到else语句,执行语句2。语句1和语句2都可以是复合语句或块。

关于if语句的说明

if后面圆括号中的表达式,可以是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型、指针型等)。

无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。

嵌套的if语句

内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。

在if子句中嵌套具有else子句的if语句

if (表达式1)

if (表达式2)

语句1

else

语句2

else

语句3

当表达式1的值非0时,执行内嵌的if-else语句;当表达式1的值为0时,执行语句3。

在if子句中嵌套不含else子句的if语句

if (表达式1)

{

if (表达式2)

语句1

}

else

语句2

注意:在if子句中的一对花括号不可缺少。因为C语言的语法规定:else子句总是与前面最近的不带else子句的if相结合,与书写格式无关。

在else子句中嵌套if语句

语句形式1:内嵌的if语句带有else子句:

if (表达式1)

语句1

else if (表达式2)

语句2

else

语句3

语句形式2:内嵌的if语句不带else子句:

if (表达式1)

语句1

else if (表达式2)

语句2

条件表达式构成的选择结构

条件运算符

条件运算符由两个运算符组成,它们是"?"和“:”。条件运算符是C语言唯一的三元运算符,这意味着需要3个运算对象。

由条件运算符构成的条件表达式

条件表达式的形式如下:

表达式1 ? 表达式2 : 表达式3

条件表达式的运算功能

当表达式1的值为非0时,求出表达式2的值,此时表达式2的值就是整个条件表达式的值。

当表达式1的值为0时,则求表达式3的值,这时表达式3的值为整个条件表达式的值。

switch语句以及用switch语句和break语句构成的选择结构

switch语句

switch语句形式如下:

switch (表达式)

{

case 常量表达式1:

语句1

case 常量表达式2:

语句2

case 常量表达式n:

语句n

default:

语句n+1

}

说明:

switch是C语言的关键字,switch后用花括号括起来的部分称为switch语句体。

紧跟在switch后一对圆括号中的表达式可以是整型表达式及字符型表达式等。

case也是关键字,与其后面的常量表达式合称case语句标号。常量表达式的类型必须与switch后圆括号中的表达式类型相同,各case语句标号的值应该互不相同。

default也是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。

case语句标号后的语句1,语句2等,可以是一条语句,也可以是若干条语句。

必要时,case语句标号后的语句可以省略不写。

在关键字case和常量表达式之间一定要有空格。

switch语句的执行过程

switch语句对表达式求值,并与每个case标签后的常量表达式作比较,会出现下面的情况之一:

如果找到与表达式匹配的常量表达式,程序将跳转执行case标签后面的语句。

如果没有匹配的常量表达式,程序将跳转执行default标签(可选)后面的语句。

如果没有匹配的常量表达式,也没有default标签,程序将跳过switch语句体,去执行switch语句之后的语句。

程序举例:

#include

int main ( void )

{

int reply;

puts ("Enter a number between 1 and 5:");

scanf ("%d", &reply);

switch (reply)

{

case 0:

break;

case 1:

puts("You entered 1.");

case 2:

puts("You entered 2.");

case 3:

puts("You entered 3.");

case 4:

puts("You entered 4.");

case 5:

puts("You entered 5.");

default:

puts("Out of range, try again.");

}

return 0;

}

假设输入2,那么输出为:

Enter a number between 1 and 5:

2

You entered 2.

You entered 3.

You entered 4.

You entered 5.

Out of range, try again.

看上去虽然switch语句找到了第一个匹配的常量表达式,然后却执行了后面的所有语句(并非只执行匹配的语句)。情况确实如此,事实上,switch语句执行了下面要讲的goto语句来匹配常量表达式。为确保只执行与匹配常量表达式相关的语句,还需要包含break语句。

在switch语句体中使用break语句

berak为C语言关键字,berak语句又称间断语句。可以将break语句放在case标号之后的任何位置,通常是case之后的语句最后加上break语句。每当执行到break语句时,立即跳出switch语句体。

利用break语句修改上面的程序:

#include

int main ( void )

{

int reply;

puts ("Enter a number between 1 and 5:");

scanf ("%d", &reply);

switch (reply)

{

case 1:

{

puts("You entered 1.");

break;

}

case 2:

{

puts("You entered 2.");

break;

}

case 3:

{

puts("You entered 3.");

break;

}

case 4:

{

puts("You entered 4.");

break;

}

case 5:

{

puts("You entered 5.");

break;

}

default:

{

puts("Out of range, try again.");

break;

}

}

return 0;

}

假设输入2,那么输出为:

Enter a number between 1 and 5:

2

You entered 2.

语句标号和goto语句

语句标号

在C语言中,语句标号不必特意加以定义,标号可以是任意合法的标识符,当在标识符后面加一个冒号,如:flag1:、stop0:,该标识符就成了一个语句标号。

注意:在C语言中,语句标号必须是标识符,因此不能简单地使用10:、15:等形式。标号可以和变量同名。

在C语言中,可以在任何语句前加上语句标号。例如:

stop: printf("End\n");

goto语句

goto语句称为无条件转向语句。程序执行至goto语句时,将立即跳转至goto语句指定的位置继续执行。

与if语句不同的是,该语句是无条件的,因为无论情况如何,程序执行到goto语句都会进行跳转。

goto语句的一般形式如下:

goto 语句标号;

注意:该语句标号必须与goto语句在同一个函数内。

运算符优先级归纳

注:表中同一行的运算符优先级相同。

优先级

运算符

1

( )(函数运算符) [ ](数组运算符) ->

2

! ~ ++ -- *(间接运算符) &(取址运算符) sizeof +(一元) -(一元)

3

*(乘法) / %

4

+(二元) -(二元)

5

>> <<

6

< <= > >=

7

== !=

8

&(按位与)

9

^

10

\

11

&&

12

\

13

?:

14

= += -= *= /= &= ^= |= <<= >>=

15

,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值