判断

判断

1. 计算时间差

输⼊两个时间,每个时间分别输⼊⼩时和 分钟的值,然后输出两个时间之间的差, 也以⼏⼩时⼏分表⽰。

#include <stdio.h>

int main() {
 
   int hour1,minute1;
   int hour2,minute2;
   
   scanf("%d %d",&hour1,&minute1);
   scanf("%d %d",&hour2,&minute2);
   
   int ih = hour2-hour1;
   int im = minute2 - minute1;
   
   if(im < 60){
       im = 60 + im;
       ih--;
   }
   
   printf("时间差是%d小时%d分\n",ih,im);
       
    return 0;
}

2. 条件

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

 关系运算的结果

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

printf("%d\n", 5==3);

printf("%d\n", 5>3);

printf("%d\n", 5<=3);

优先级

所有的关系运算符的优先级⽐算术运算的 低,但是⽐赋值运算的⾼

7 >= 3 + 4

int r = a>0;

判断是否相等的==和!=的优先级⽐其他的 低,⽽连续的关系运算是从左到右进⾏的

5 > 3 == 6 > 4

6 > 5 > 4

a == b == 6

a == b > 0

3. 找零计算器

找零计算器需要⽤户做两个操作:输⼊购 买的⾦额,输⼊⽀付的票⾯,⽽找零计算 器则根据⽤户的输⼊做出相应的动作:计 算并打印找零,或告知⽤户余额不⾜以购 买。

从计算机程序的⾓度看,这就是意味着程 序需要读⽤户的两个输⼊,然后进⾏⼀些 计算和判断,最后输出结果。

#include <stdio.h>

int main() {
 
    //初始化
    int price = 0;
    int bill = 0;
    //读入金额和票面
    
    printf("请输入商品金额:");
    scanf("%d", &price);
    
    printf("请输入你的票面:");
    scanf("%d",&bill);
    
    //计算找零钱
    printf("应该找你:%d\n",bill - price);
    
    return 0;
}

/* */注释

延续数⾏的注释,要⽤多⾏注释的格式来 写。多⾏注释由⼀对字符序列“/*”开始, ⽽以“*/”结束。

也可以⽤于⼀⾏内的注释

int ak=47 /* 36*/, y=9;

4.判断票⾯够不够

#include <stdio.h>

int main() {
 
    //初始化
    int price = 0;
    int bill = 0;
    //读入金额和票面
    
    printf("请输入商品金额:");
    scanf("%d", &price);
    
    printf("请输入你的票面:");
    scanf("%d",&bill);
    
    //计算找零钱
    if(bill>=price){
         printf("应该找你:%d\n",bill - price);
    }else{
         printf("你的票面小于商品金额\n");
    }
   
    
    return 0;
}

5. ⽐较数的⼤⼩

#include <stdio.h>

int main() {
 
 int a,b;
   printf("请输入两个整数:");
   
   scanf("%d %d",&a,&b);
   
   int max=0;
   
   if(a>b){
       max = a;
   }else{
       max = b;
   }
   printf("大的那个是%d\n",max);
   
    return 0;
}

6.if语句

⼀个基本的if语句由⼀个关键字if开头,跟 上在括号⾥的⼀个表⽰条件的逻辑表达 式,然后是⼀对⼤括号“{}”之间的若干条 语句。如果表⽰条件的逻辑表达式的结 果不是零,那么就执⾏后⾯跟着的这对 ⼤括号中的语句,否则就跳过这些语句 不执⾏,⽽继续下⾯的其他语句

计算薪⽔

#include <stdio.h>

int main() {
 
    const double RATE = 8.25;
    const int STANDARD = 40;
    double pay = 0.0;
    int hours;
    
    printf("请输入工作的小时数");
    scanf("%d",&hours);
    if(hours>STANDARD){
        pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5 );
    }else{
        pay = hours * RATE;
    }
    
    printf("\n应付工资:%f\n",pay);
 
    return 0;
}

7. 判断成绩

#include <stdio.h>

int main() {
    
    const int PASS = 60;
    int score;
    
    printf("请输入成绩:");
    scanf("%d",&score);
    
    printf("你输入的成绩是%d.\n",score);
    if(score < PASS){
        printf("很遗憾,这个成绩没有及格");
    }else{
        printf("恭喜你,这个成绩及格了。");
    }
    
    printf("再见\n");
    
    return 0;
}

嵌套的if

8.找三个数中的最⼤

如果要求输⼊三个整数,输 出其中最⼤的,应该怎么做?

#include <stdio.h>

int main() {
    
    int a,b,c;
    
    printf("请输入三个整数:");
    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("最大的是%d \n",max);
    
    return 0;
}

嵌套的判断

当if的条件满⾜或者不满⾜的时候要执⾏的语句也 可以是⼀条if或if-else语句,这就是嵌套的if语句

 else的匹配

else总是和最近的那个if匹配

 缩进

缩进格式不能暗⽰else的匹配

 嵌套的if

if ( gameover == 0 ) if ( player2move == 2 ) printf("Your turn\n");

if ( gameover == 0 ) if ( player2move == 2 ) printf("Your turn\n"); else printf("My turn\n");

9. 级联的if-else if

分段函数

if ( x < 0 ) {

f = -1;

} else if ( x == 0 ) {

f = 0;

} else {

f = 2 * x; }

级联的if-else if

 

if语句常⻅错误

  • 忘了⼤括号
  • if后⾯的分号
  • 错误使⽤==和=
  • 使⼈困惑的else
  • if后⾯的分号
  • 错误使⽤==和=,    if只要求()⾥的值是零或⾮零
  • 永远在if和else后⾯加上⼤括 号,即使当时后⾯只有⼀条语 句

代码风格

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

10.多路分⽀

switch-case

  • 控制表达式只能是整数型的 结果
  • 常量可以是常数,也可以是 常数计算的表达式
  • 根据表达式的结果,寻找匹 配的case,并执⾏case后⾯的 语句,⼀直到break为⽌
  • 如果所有的case都不匹配,那 么就执⾏default后⾯的语句; 如果没有default,那么就什么 都不做
#include <stdio.h>

int main() {
    
    int type=0;
    printf("输入1-4\n");
    scanf("%d",&type);
    
   switch(type){
       case 1:
       printf("你好");
       break;
       case 2:
       printf("早上好");
       break;
       case 3:
       printf("中午好");
       break;
       case 4:
       printf("下午好");
       break;
       default:
       printf("请输入1-4\n");
   }
   
   printf("重新运行");
    
    return 0;
}

break

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

#include <stdio.h>

int main() {
    
   printf("请输入成绩(0-100)\n");
   int grade;
   
   scanf("%d",&grade);
   
   grade /= 10;
   
   switch(grade){
       case 10:
       case 9:
       printf("A\n");
       break;
       case 8:
       printf("B\n");
       break;
       case 7:
       printf("C\n");
       break;
       case 6:
       printf("D\n");
       break;
       default:
       printf("F\n");
       break;
   }
    
    return 0;
}

这段代码不符合”单一出口“的原则,因为我们还没学过字符或字符串数据的处理

原文地址:https://www.cnblogs.com/hechunfeng/p/15646405.html