第三周:3.1判断

简介: C语言的第三周内容,判断是编程的一个重要里程,在任何一个编程语言中都离不开的东西,当然,也包括了C语言,在这章节你会逐渐了解判断的魅力的

计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示

问题:如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差?

如果

1.用分别减的方案,然后判断有没有出现借位行不行?

2.借位的表现是,分钟减的结果小于0,找小时借一位,如下:im代指分钟,ih代指小时

if(im<0){

   im=60+im;

   ih--;

}

if(条件成立){

....

}

判断的条件

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

运算符 意义
== 相等
!= 不相等
> 大于
>= 大于或等于
< 小于
<= 小于或等于

关系运算的结果

  1. 当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0
  2. printf("%d\n",5==3);
  3. printf("%d\n",5>3);
  4. printf("%d\n",5<=3);

优先级

  1. 所有的关系运算符的优先级比算数运算的低,但是比赋值运算的高
  2. 7>=3+4  在这里面3+4先运算然后等于7,所以式子是可以运行的
  3. int r = a > 0;  在这里a>0先运算,式子成立,答案为1,所以r = 1

找零计算器

1.找零计算器需要用户做两个操作:输入购买的金额,输入支付吧票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买。

2.从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些计算和判断,最后输出结果

//初始化

intprice=0;

intbill=0;

//读入金额和票面

printf("请输入金额:");

scanf("%d",&price);

printf("请输入票面:");

scanf("%d",&bill);

//计算找零

printf("应该找您:%d\n",bill-price);

双斜杠//注释

双斜杠//是注释(comment)的意思:插入在程序代码中,用来向读者提供解释信息。它们对于程序的功能没有影响,但是往往能使得程序更容易被人类读者理解

/* */注释

1.延续多行数行的注释,要用多行注释的格式来写。多行注释由一对字符序列“/”开始,而以“/”结束

2.也可以用于一行内的注释

3.int ak = 47/36/,y = 9;

当票面不够的情况

1.当票面不够的情况怎么办?这个时候就需要进行判断用户读入的金额是否超过了票面

2.对计算找零这个步骤进行优化:

if( bill>=price){

  printf("需要找您:%d\n元",bill-price);

}

这个是当票面够的情况才会显示出需要找多少钱,如果钱不够的话则就不会显示出需要找钱了

3.如果当钱不够的情况需要提示用户"你的钱不够"怎么做?

错误示范:

if( bill>=price){

  printf("需要找您:%d/n元",bill-price);

}

printf("你的钱不够\n");

这种情况不管钱够不够都会输出 你的钱不够

else

else = 否则的话

正确的做法是:

if( bill>=price){

  printf("需要找您:%d/n元",bill-price)

}else{

  printf("你的钱不够\n");

}

比较数的大小

比较数的大小的各种方法

inta,b;

printf("请输入两个整数:");

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

intmax=0;

if(a>b){

   max=a;

}

printf("大的那个是%d\n", max);

这个代码里面没有解决b>a的问题,当a>b的条件不成立时,程序就结束了,max没有得到值

方案有很多,列举3个

inta,b;

printf("请输入两个整数:");

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

intmax=0;

if(a>b){

   max=a;

}

if(b>a){

   max=b;

}

printf("大的那个是%d\n", max);

inta,b;

printf("请输入两个整数:");

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

intmax=0;

if(a>b){

   max=a;

}else{

   max=b;

}  

printf("大的那个是%d\n", max);

inta,b;

printf("请输入两个整数:");

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

intmax=b;

if(a>b){

   max=a;

}

printf("大的那个是%d\n", max);

if语句

在上面中我们已经充分了解到了if语句的用法跟含义

但其实if也可以不带中括号去执行(不建议),只能执行if接下来的一句内容

例如:

constdoubleRATE=8.25;

constdoubleSTANDARD=40;

doublepay=0.0;

inthours;

printf("请输入工作的小时数:");

scanf("%d",&hours);

printf("\n");

if(hours>STANDARD)

   pay=STANDARD*RATE+ (hours-STANDARD) * (RATE*1.5);

else

   pay=hours*RATE;

printf("应付工资:%f\n",pay);

#include <stdio.h>

intmain()

{

   constintMINOR=35;

   intage=0;

   printf("请输入你的年龄: ");

   scanf("%d", &age);

   printf("你的年龄是%d岁。\n", age);

   if (age<MINOR) {

       printf("年轻是美好的,");

   }

   printf("年龄决定了你的精神世界,好好珍惜吧。\n");

   return0;

}

3.2分支

嵌套的判断

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

else的匹配

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

缩进

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

if( code==READY )

   if( count<20 )

       printf("一切正常\n");

else

       printf("继续等待\n");

tips

1.在if或者else后面总是用{}

2.即使只有一条语句的时候

分段函数

if( x<0 ){

 f=-1;

}elseif( x==0){

 f=0;

} else {

 f=2*x;

}

if语句常见的错误

1.忘了大括号(永远在if和else后面加上大括号,即使当时后面只有一条语句)

2.if后面忘了分号

3.错误使用==和=

4.使人困惑的else

switch-case

1.控制表达式只能是整数型的结果

2.常量可以是常数,也可以是常数计算的表达式

3.根据表达式的结果,寻找匹配的case,并执行case后面的语句,一直到break为止

4.如果所有的case都不匹配,那么就执行default后面的语句;如果没有default,那么就什么都不做

switch(控制表达式){

case常量:

       语句

       ...

case常量:

       语句

       ...

default:

       语句

       ...

}

break

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

目录
相关文章
|
6月前
|
算法 测试技术
枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)
枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)
|
6月前
|
JavaScript 测试技术
【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数
【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数
|
2月前
|
存储
判断某年某月某日
判断某年某月某日
80 11
|
5月前
1073 多选题常见计分法 (20 分)
1073 多选题常见计分法 (20 分)
|
6月前
|
C++
[蓝桥杯 2023 省 A] 填空问题--幸运数
[蓝桥杯 2023 省 A] 填空问题--幸运数
76 0
判断月份所在的季节
判断月份所在的季节
98 0
|
安全 C++
CSDN三道简单题:合并检测、星期一、特别数的和
CSDN三道简单题:合并检测、星期一、特别数的和
132 0
CSDN三道简单题:合并检测、星期一、特别数的和
【简单C练习——“哪一天返回”(for/while)】
小明被不明势力劫持。后莫名其妙被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。 请计算一下,小明在第几天就能凑够108元,返回地球。
【简单C练习——“哪一天返回”(for/while)】
|
测试技术
(dfs)(枚举)第十四届蓝桥杯第三次模拟赛:9.最大滑雪长度
(dfs)(枚举)第十四届蓝桥杯第三次模拟赛:9.最大滑雪长度
132 0