C语言的选择语句

来源:互联网 发布:三菱plc编程教学视频 编辑:程序博客网 时间:2024/05/21 15:44

C语言的选择语句允许程序在一组选项中选择一条特定的执行路径。C语言包括两类选择语句,if语句和switch语句。

if语句

if语句通过测试表达式的值从两种选项中选择一种,if语句的一般形式为:

if (表达式)     语句

其中表达式的括号是必须的。

if语句的执行步骤是先计算圆括号内表达式的值,如果表达式的值非零,则结果为真,执行圆括号后面的语句。注意区分关系运算符中的==和赋值运算符,因为在C语言中两则可以同时作为if语句的表达式但具有完全不同的意义,出现这种情况时gcc编译器在开启-Wall选项会产生警告。

/************************************** * using_if_1.c                       * *                                    * * C语言中的if语句-基础               * **************************************/#include <stdio.h>int main(){  int i = 3;  int j = 5;  if (i < j)    printf("%d比%d小\n", i, j);  /*赋值表达式i=5结果为5,为真,执行printf语句*/  if (i = 5)    printf("赋值表达式作if语句表达式\n");  /*关系表达式j == 5结果为1, 为真,执行printf语句*/  if (j == 5)    printf("关系表达式作if语句表达式\n");  return 0;}

if语句基本
if语句中可以包含else子语句,表示在圆括号内的表达式值为零时,执行else后面的语句,其基本形式如下:

if (表达式)     语句 else     语句

if 语言内部的语句可以是C语言支持的任何类型的语句,包括if语句本身,并且对嵌套层次没有限制。内部语句通常采用缩进形式。当嵌套层次造成程序混乱,像在表达式中使用圆括号一样使用大括号{}

当在else语句的子语句中嵌套另一个if语句时,一般不对它进行缩进,而是把每个else都与最初的if对齐,形成级联式if语句的书写形式,这种形式可以避免判定数量过多时造成的过度缩进问题,同时也更清晰地显示这是一连串的判定:

if (表达式)    语句else if (表达式)    语句else if (表达式)    语句else    语句
/************************************* * using_if_2.c                      * *                                   * * C语言if语句的else子语句及级联式if * *************************************/#include <stdio.h>int main(){  int i = 0;  scanf("%d", &i);  if (i % 2 == 0)    printf("%d是偶数\n", i);  else    printf("%d是奇数\n", i);  if (i < 0)    printf("%d < 0", i);  else if (i < 100)    printf("0 <= %d < 100\n", i);  else    printf("%d > 100\n", i);  return 0;}

else子语句及级联式if语句

switch语句

在编程中,常常需要把表达式和一组值相比较,从中找到匹配项,执行相应的语句。级联式if语句可以实现这个需求,但是对于整型的表达式值和可选项来说,C语言提供了switch语句。switch语句比级联式if更易读,并且执行速度往往比较快。

switch语句的常用格式是:

switch (表达式){    case 常量表达式:        多条语句    ...    case 常量表达式:        多条语句    default:        多条语句}

switch语句由以下三部分组成:

  • 控制表达式 。switch后面跟的由圆括号括起来的整型表达式称为控制表达式,该表达式的结果必须是整型或是字符型。
  • 情况标号。每一种情况以case 常量表达式 :开始,常量表达式不能包含变量及函数调用,且结果必须为整数值。case后面只能跟一个常量表达式,但多个情况标号可以放在同一组语句前面,表示对多组情况执行同一组语句。
  • 语句。情况标号后面可跟任意数量的语句,不需要用大括号把这些语句括起来,且最后一条语句通常是break语句。在switch语句中,执行break语句时,程序会跳出switch语句,而继续执行switch语句后面的语句。忘记’break’语句,程序就会继续执行下面情况的语句,也是编程时常犯的错误。

C语言不允许重复的情况标号,但不要求情况的顺序,default情况可以不放在最后。也不要求必须有default情况,若在没有default的情况下且所有情况都不匹配,就就直接传给switch语句后面的语句。

/************************************* * using_switch.c                    * *                                   * * C语言中的switch语句               * *************************************/#include <stdio.h>int main(){  char score = '\0';  printf("Please enter your score:\n");  scanf("%c", &score);  switch (score)  {  case 'A':  case 'B':  case 'c':  case 'D':    printf("Congratulations! You passed\n");    break;  case 'E':    printf("Sorry, You failed\n");    break;  default:    printf("Wrong score!\n");    break;  }  return 0;}

switch语句

参考文献

  1. K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
0 0