怎样整理c语言选择结构的知识 - 爱问答

(爱问答)

怎样整理c语言选择结构的知识

c语言选择结构(分支结构)

1.关系运算符及其表达式

关系运算符:在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作,比较两个量的运算符就称为关系运算符

< <= >= > 优先级高

== !=  优先级

优先级高低为:  算术运算符 > 关系运算符 > 赋值运算符

结合性      :  从左到右

a + b > c - d  (a + b) > (c - d) 

a > b > c

a != b == c

C 语言没有专用的逻辑值,0 表示假   非0 表示真

--------------------------------------------------------

2.逻辑运算符及其表达式

三种逻辑运算符

&&(AND) ||(OR) 双目运算符 从左算到由

!(NOT) 单目运算符 从又算到左

优先级

! > && > ||

! > 算术 > 关系 > && 和 || > 赋值

非0即为真

并不是所有的关系运算符都要算到最后

int a = 1, b = 2, c = 3, d = 4, m = -1, n = -1;

(m = a > b) && (n = c > d);在&&当m=0时程序不会在执行,直接输出0;在||前当为非0时程序不会在执行,直接输出1;

m = ? n = ?  0 -1

--------------------------------------------------------

3.if语句的三种形式

1) if

if(表达式)

语句

语义: 如果表达式的值为真,就执行其后的语句,否则,不执行

eg1:从键盘输入两个数,输出其中较大的那个

例程:

int main(int argc,char *argv[])

{

int a,b;

scanf("%d%d",&a,&b);//scanf 可以被空格,回车,Tab打断

 

if(a > b)

printf("max = %d ",a);

if(a <= b)

printf("max = %d ",b);

return 0;

}

2) if-else

if(表达式)

语句1

else

语句2

语义:如果表达式的值为真,就执行语句1,否则执行语句2

3) if-else-if

if(表达式1)

语句1

else if(表达式2)

语句2

……

else 

语句n

语义:

eg2:根据输入的字符判断其是大写字母capital,小写字母lowercase,数字字符digit 还是其他字符 other 。

例程:

int main(int argc,char *argv[])

{

char ch = getchar();

if(ch >= 'A' && ch <= 'Z')

printf("this is capital ");

else if(ch >= 'a' && ch <= 'z')

printf("this is lowercase ");

else if(ch >= '0' && ch <= '9')

printf("this is digit ");

else

printf("this is other ");

return 0;

}

 

注意:使用if语句需要注意的问题

1) if关键后面的表达式通常是逻辑表达式或是关系表达式,但是也可以是其他表达式,如赋值表达式,甚至可以

  是变量

  if(a = 5) // if(5 == a) if(5 = a)

  if(b) -> if(b != 0)

2) 如果在if语句后面要执行多条语句,那么请加上{}以复合语句的形式出现

eg3: 从键盘输入三个数,请按照从小到大的顺序进行输出。

int main(int argc,char *argv[])

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

int tmp;

if(a > b)

{

tmp = a;

a = b;

b = tmp;

}

if(a > c)

{

tmp = a;

a = c;

c = tmp;

}

if(b > c)

{

tmp = b;

b = c;

c = tmp;

}

printf("%d <= %d <= %d ",a,b,c);

return 0;

}

 

if语句的嵌套问题:

在嵌套内的if语句可能又是if-else 类型的,这将会出现多个if和多个else重叠的况,这时要特别注意if和

else的配对问题。

else 总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对

--------------------------------------------------------

4.条件运算符及其表达式

条件运算符为 ? 和: 是一个三目运算符

一般形式为  expression1? expression2:expression3

语义:如果表达式1的值为真,就执行表达式2,否则执行表达式3

if(a > b)

max = a;

else

max = b;

max = (a > b? a:b)

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

eg: 输入一个字符,判断它是不是大写字母,如果是,将其转换为小写,如果不是,直接输出

if(ch >= 'A' && ch <= 'Z')

ch = ch - 'A' + 'a'

else

ch = ch;

ch >= 'A' && ch <= 'Z'?ch = ch - 'A' + 'a':ch = ch;

ch = (ch >= 'A' && ch <= 'Z'?ch - 'A' + 'a':ch);

 

优先级:

关系 > 条件 > 赋值

结合性 从右至左

a > b ? a : c > d? c:d - > a > b ? a : (c > d? c:d)

--------------------------------------------------------

5.switch语句

注意:

1) 在case后面允许出现多条语句,可以不用{}括起来;

2) 在case 后面的各常量表达式(只能是常量或者常量表达式)必须互不相同,否则会出现出错;

3) 各case 和defaul 的顺序可以任意变动;

4) default 可以省略不写;

5) switch 后面的表达式的内容不能是浮点型,而只能是整型,字符型,枚举性

eg5: 先从键盘输入一个字符(+ - * / %),然后输入两个数字输出这两个数字和符号运算后的结果

int main(int argc,char *argv[])

{

char ch;

int a,b;

scanf("%d%d",&a,&b);

getchar();//吸收前面遗留在缓冲区里面的空格 或者 Tab  回车

scanf("%c",&ch);

printf("%d ",ch);//打印的是ch的ASCII码

switch(ch)

{

case '+':

printf("%d + %d = %d ",a,b,a+b);

break;

case '-':

printf("%d - %d = %d ",a,b,a-b);

break;

case '/':

printf("%d / %d = %d ",a,b,a/b);

break;

case '*':

printf("%d * %d = %d ",a,b,a * b);

break;

case '%':

printf("%d %% %d = %d ",a,b,a % b);

break;

default:

printf("input error ");

}

return 0;

}

 

--------------------- 

作者:iboygood 

来源:CSDN 

原文:https://blog.csdn.net/iboygood/article/details/80748175 

版权声明:本文为博主原创文章,转载请附上博文链接!


相关标签:c语言

下一篇:c++给定N个正整数,请统计奇数和偶数各有多少个?

上一篇:大神谢谢你的帮助结果我都测试出来可以使用

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?