if条件判断语句

  1. #include <stdio.h>
  2. int main(voif){
  3. int hour1,minute1;
  4. int hour2,minute2;
  5. scanf("%d %d",&hour1,&minute1);
  6. scanf("%d %d",&hour2,&minute2);
  7. int ih = hour2 - hour1;
  8. int im = minute2 - minute1;
  9. if(im <0 ){ //如果(im小于0),那么
  10. im = 60 + im;
  11. ih --;
  12. }
  13. printf("时间差是%d小时%d分。\n",ih,im);
  14. return 0;
  15. }

if(条件成立){
······
}

判断的条件

条件

计算两个值之间的关系,所以叫关系运算

运算符 条件
== 相等
!= 不相等
> 大于
>= 大于等于
< 小于
<= 小于等于

关系运算的结果

当两个值的关系符合关系运算的预期时,关系运算的结果为整数1,否则为整数0。 整数1代表成立,整数0代表不成立

优先级

所有关系运算符的优先级比算术运算的低,但是比赋值运算的高。

7>=3+4 (先算3+4的结果,再与7比较)

  • 判断是否相等的 ==!= 的优先级比其他的低,而连续的关系运算是从左到右进行的。
  • 5 > 3 == 6 > 4
  • 6 > 5 > 4

找零计算器

  1. #include <stdio.h>
  2. int main(void){
  3. //初始化
  4. int price = 0;
  5. int bill = 0;
  6. //读入金额和票面
  7. printf("请输入金额:");
  8. scanf("%d",&price);
  9. printf("请输入票面:");
  10. scanf("%d",&bill);
  11. //计算找零
  12. printf("应该找您:%d",bill - price);
  13. return 0;
  14. }

注释

注释(comment)插入在程序代码中,用来向读者提供解释信息。他们对于程序功能没有任何影响,但是往往能够使程序更容易被人类读者理解。

单行注释

  • 以两个斜杠“//”开头的语句把程序分成了三个部分:
  1. 初始化
  2. 读入金额和票面
  3. 计算并打印找零

    //是C99的注释,ANSI C不支持

多行注释

  • 延续数行的注释,要用多行注释的格式来写。多行注释有一对字符序列“/”开始,以“/”结束。
  • 也可用于一行内注释 例:int ak=47/36/,y=49;

否则的话

  • else = 否则的话
    1. int price = 0;
    2. int bill = 0;
    3. //读入金额和票面
    4. printf("请输入金额:");
    5. scanf("%d",&price);
    6. printf("请输入票面:");
    7. scanf("%d",&bill);
    8. //计算找零
    9. if(bill > price){
    10. printf("应该找您:%d\n",bill - price);
    11. }else{
    12. printf("你的钱不够\n");
    13. }

if语句再探


嵌套的IF-ELSE

  • 判断三个数哪个数是最大的 ```c int a,b,c; scanf(“%d %d %d”,&a,&b,&c);

int max = 0;

if(a > b){ if(a > c)( max = a; )else{ max = c; } }else{ if(b > c){ max = b; }else{ max = c; } }

printf(“The max is %d.\n”,max)

  1. <a name="v0DrW"></a>
  2. ### 嵌套的判断
  3. - 当if满足或者不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套if语句。
  4. ```c
  5. if(code == READY){
  6. if(count < 20){
  7. printf("一切正常\n");
  8. }else{
  9. printf("继续等待\n");
  10. }
  11. }

else的匹配

  • else总是和最近的那个if匹配。(if语句没加大括号的情况下)
  • 缩进并不能暗示else的匹配。

    tips

  • 在if或else后面总是用{}

  • 即使只有一条语句的时候

    级联的if-else if

    分段函数

    f(x)=-1;x<0
    0;x=0;
    2x;x>0;
if(x<0){
    f = -1;
}else if(x=0){
    f = 0;
}else{
    f = 2*x;
}

IF语句常见的错误

  • 忘了大括号
  • if后面加分号
  • 错误的使用==和=
  • 使人困惑的else

代码风格

  • 在if和else之后必须加大括号形成语句块;
  • 在大括号内的语句缩进一个tab的位置;

多路分支

switch-case

switch(type){
    case 1:
        printf("你好");
        break;
    case 2:
        printf("早上好");
        break;
    case 3:
        printf("晚上好");
        break;
    case 4:
        printf("再见");
        break;
    default:
        printf("啊,什么啊??");
}

switch(控制表达式){
case 常量:
语句
……
case 常量:
语句
……
default:
语句
}

  • 控制表达式只能是整数型的结果
  • 常量可以是常数,也可以是常数计算表达式(C99才可以)

    break

    switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。