C 判断

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

C 语言把任何非零非空的值假定为 true,把null 假定为 false

下面是大多数编程语言中典型的判断结构的一般形式: C 中的判断语句

判断语句

C 语言提供了以下类型的判断语句。点击链接查看每个语句的细节。

语句描述
if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if…else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句您可以在一个 ifelse if 语句内使用另一个 ifelse if 语句。
switch 语句一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句您可以在一个 switch 语句内使用另一个 switch 语句。

? : 运算符(三元运算符)

我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if…else 语句。它的一般形式如下:

  1. Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。

? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

C 判断 - 图2

实例

以下实例通过输入一个数字来判断它是否为奇数或偶数

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int num;
  5. printf("输入一个数字 : ");
  6. scanf("%d",&num);
  7. (num%2==0)?printf("偶数"):printf("奇数");
  8. }

举一个三目(元)运算的例子

  1. #include <stdio.h>
  2. int A=10;
  3. int B=20;
  4. char buy;
  5. int sum,number;
  6. int main(){
  7. printf("以下是本店的商品及价格:\n A 商品每个十元;\n B 商品每个二十元;\n\n");
  8. printf("请输入你所需的产品(A 或 B):");
  9. scanf("%c",&buy);
  10. printf("请输入所需的数量:");
  11. scanf("%d",&number);
  12. sum=buy=='A'?A*number:B*number;
  13. printf("\n你所需要的%d个%c商品总共%d元。\n",number,buy,sum);
  14. return 0;
  15. }

switch语句一般形式

  1. switch(表达式)
  2. {
  3. case 常量表达式1:语句1;
  4. case 常量表达式2:语句2;
  5. ...
  6. default:语句n+1;
  7. }

意思是先计算表达式的值,再逐个和 case 后的常量表达式比较,若不等则继续往下比较,若一直不等,则执行 default 后的语句;若等于某一个常量表达式,则从这个表达式后的语句开始执行,并执行后面所有 case 后的语句。

与 if 语句的不同:if 语句中若判断为真则只执行这个判断后的语句,执行完就跳出 if 语句,不会执行其他 if 语句;而 switch 语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有 case 语句。在每一 case 语句之后增加 break 语句,使每一次执行之后均可跳出 switch 语句,从而避免输出不应有的结果。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a;
  5. printf("input integer number: ");
  6. scanf("%d",&a);
  7. switch(a)
  8. {
  9. case 1:printf("Monday\n");
  10. break;
  11. case 2:printf("Tuesday\n");
  12. break;
  13. case 3:printf("Wednesday\n");
  14. break;
  15. case 4:printf("Thursday\n");
  16. break;
  17. case 5:printf("Friday\n");
  18. break;
  19. case 6:printf("Saturday\n");
  20. break;
  21. case 7:printf("Sunday\n");
  22. break;
  23. default:printf("error\n");
  24. }
  25. }