首页 资讯 应用 高压 设计 行业 低压 电路图 关于

单片机

旗下栏目: PLC 嵌入式 单片机 DCS

C语言决策与循环

单片机 | 发布时间:2017-11-22 | 人气: | #评论# |本文关键字:C语言,C#,循环
摘要:第四章 决策与循环 4.1 逻辑运算与决策 关系运算的结果为逻辑数据True或False,可作为决策判断到的依据。例如,人们根据红绿灯决定前进或停止,流程图如4-1所示。 图4-1 “红绿灯状况”是判

第四章 决策与循环

4.1 逻辑运算与决策

关系运算的结果为逻辑数据True或False,可作为决策判断到的依据。例如,人们根据红绿灯决定前进或停止,流程图如4-1所示。

第四章 决策与循环

 图4-1

“红绿灯状况”是判断的依据,称为“条件”(Condition)。在程序中,关系表达式的值为条件;若其值为True,表示此条件成立;若其值为False,表示条件不成立。例如下述程序:

int x, y;

x = 3;

y = 5;

if(x < y)

printf("*");

else

printf("#");

x < y为if指令的条件,如果条件成立(即x < y值为True),则执行printf("*")。如果条件不成立(即x < y值为False),就执行printf("#")。如图4-2所示。

第四章 决策与循环

 图4-2

x < y相当于3 < 5,其值为1,表示条件成立,就执行printf("*"),表示输出“*”。条件表达式有时只含操作数而无操作符,例如:

int x;

x = 4 > 0;

if(x)

printf("ABC");

x位于if的括号内,成为逻辑数据。因x值为1,表示True,就执行printf("ABC")。当int变量位于条件的位置上时,就成为逻辑数据。若其值为1,就表示条件成立;若为0,表示条件不成立。然而,若其值既非1也非0,又如何?简单规则:

“若变量值为0,代表False;若不为0,就代表True”。

例如:

int x;

x = 2 + 5;

if(x)

{

printf("pqr");

printf("XYZ");

}

x值为7,不是0,条件成立就输出结果pqr XYZ字符串。

请注意:因为if与else是控制指令,并非一般运算指令,所以if(条件)与else之后不用加分号。有时候,当条件为True,应执行的指令不只一个时,则须用大括号将这些指令括起来。同样地,当条件为False,应执行的指令不只一个时,也必须用大括号将它们括起来。在if部分或else部分中,若只含有一个指令,则其大括号可省略。例如:输入一个字符,检查看是否为阿拉伯数字,代码如下。

char digit;

digit = getchar();

if(digit >= '0' && digit <= '9')

{

printf("DIGIT");

}

else 

printf("Not digit");

这里的if部分与else部分各含一个指令。if部分的大括号说明只有一个指令。else部分没有大括号,意味着else部分只含有一个指令。因此,只含有一个指令时,可省略大括号。

4.2 嵌套的if指令

如果if部分或else部分内含有其他的if指令,则称为“嵌套的”(Nested)if指令。请看下面的程序——输入字符,并检查是否为大写字母。

char y;

printf("Type in a character:\n");

scanf("%c", &y);

if(y <= 'Z')

if(y >= 'A')

printf("[%c]", y);

请您阅读程序时,请先弄清if及else部分的范围。

例如,此程序含两个if指令,都没有else部分,且未使用大括号。因此,if部分包含一个指令,其范围是到其后第一个分号“;”为止。

内层if指令较单纯,其范围包括printf()指令。外层if指令的范围包括内层if指令。必要时,可加上大括号来让其更清楚些。

因此,找出if部分的简答方法为:“有大括号,看大括号;无大括号就看第一个分号。”

执行printf()时,当碰到第一个分号时,就结束内层if部分,也结束外层if部分。有些情况,else部分也含别的if指令。

4.3 多选1的决策

最常见的选择动作是“2选1”,它含有两个选择性的“操作”,让计算机挑选其中之一。此外,还常有“3选1”的情形。这可利用“嵌套的if”来表示这种情况,例如:

if(k == 1) 行为1;

else if(k == 2) 行为2;

else if(k == 3) 行为3;

这是3选1抉择,根据三个条件来抉择。除了“嵌套的if”可以表达“多选1”的抉择之外,还有一种常用switch...case指令,能更清楚地表达3选1的抉择。

switch(k)

{

case 1:

行为1;

break;

case 2:

行为2;

break;

case 3:

行为3;

break;

}

各case的末尾含有break指令。此指令具有重要用途,请小心掌控。其简单规则:除非有特别目的,每个选择行动之后宜加上break指令,这是个好习惯。什么特殊目的呢?稍后在说明。请先看个例子:有键盘输入整数,其值为1、2、3或4;让计算机打印出相对应的“星期几”名称。这是4选1的情形,其程序可写为:

int k;

scanf("%d", &k);

switch(k)

{

case 1:

printf("Monday");

break;

case 2:

printf("Tuesday");

break;

case 3:

printf("Wednesday");

break;

case 4:

printf("Thursday");

break;

}

switch()指令使用大括号将各case括起来。其中,在switch 的小括号中,必须是整数或字符。而且case与“冒号”(“:”)之间的数字,也必须是整数或字符。此程序让您输入整数,假若输入整数2,则k值为2。switch(k)的意思是:用k值2跟各case后面的整数比较。计算机依序比较各case,先用k值2与第一个case的整数值1比较,若它们不相等,就跳过第一个case部分。继续与第二个case的整数值2比较,若其值相同,就执行case部分——printf("Tuesday")及后的break指令。switch指令通常含几个case部分,一旦碰到case内的break指令,就立即跳到switch...case指令的尾巴,亦即switch指令的右大括号(“)”)。如图4-3所示。

C语言-switch指令

 图4-3

一旦执行到switch指令的结尾大括号,就完成switch指令。

责任编辑:C语言

上一篇:C#数组与字符串

下一篇:没有了

首页 | 资讯 | 应用 | 高压 | 设计 | 行业 | 低压 | 电路图 | 关于

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版

Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。