1.计算时间差:如果直接减,会出现分钟借位的情况,如,1点40分和2点10分的差
借位:结果为负数,小时数要减一
我们此时C语言的一种手段:条件判断,用if语句
#include <studio.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 <0) {
im = 60 + im;
ih --;
}
printf ("时间差是 %d小时%d分。\n ", ih , im );
该过程可通过调试可知
if那行代码表示:如果im<0,那么如何。 若用户输入的时间符合Im<0,电脑会进行大括号里面的代码,反之跳过
2. if语句
if(条件成立) {
...
}
3.条件
1>.计算两个值之间的关系,所以叫做关系运算(或叫做比较运算)
运算符 | == | != | > | >= | < | <= |
意义 | 相等 | 不相等 | 大于 | 大于或等于 | 小于 | 小于或等于 |
一个等号是赋值
关系运算的结果:
当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0.(结果只有两 种值)
#include <stdio.h>
int main()
{
printf ("%d\n", 5==3);
printf ("%d\n", 5>3);
printf ("%d\n", 5<=3);
return 0;
}
运行结果为:0 1 0
2>.优先级:
●所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高
写个程序验证一下
#include <stdio.h>
int main()
{
printf("%d\n", 7>=3+4);
return 0;
}
运行结果为:1 说明3+4先运算,后7>=7条件成立,则结果为 1
3>.优先级
●判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
● 5 > 3 == 6 > 4
● 6 > 5 > 4
● a == b == 6
● a == b > 0
4.找零计算器
●找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购头。
●从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些计算和判断,最后输出结果。
找零计算器
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf ("请输入金额:");scanf ("%d ", &price );
printf ("请输入票面:");
scanf ("%d ", &bill );
// 计算找零
printf ("应该找您:%d\n ", bill - price );
注释
●以两个斜杠“//”开头的语句把程序分成了三个部分:
1.初始化
2.读入金额和票面
3.计算并打印找零
//是C99的注释, ANSI C 不支持
注释插入在程序代码中,用来向读者提供解释信息。它们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解
/**/注释
●延续数行的注释,要用多行注释的格式来写。多行注释由一对字符序列“/*”开始,而以“*/”结束。
●也可以用于一行内的注释
● int ak =47/*36*/, y =9;
单行的注释是C99特有的,多行是C语言有的
5.判断票面够不够,如果不够如何?
用if解决
// 初始化
int price = 0;
int bill = 0;
// 读入金额和票面
printf ("请输入金额:");scanf ("%d ", &price );
printf ("请输入票面:");
scanf ("%d ", &bill );
// 计算找零
if ( bill >= price ) {
printf ("应该找您:%d\n ", bill - price );
}
const int MINOR = 35;
int age = 0;
printf ("请输人你的年龄:");
scanf ("%d ", &age );
printf ("你的年龄是 d 岁。\ n ", age ;
if ( age < MINOR ) {
printf ("年轻是美好的,");
}
printf ("年龄决定了你的精神世界,好好珍惜吧。\ n ");
否则的话:如果条件不成立呢?
不够怎么办?
#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 );
}
printf("你的钱不够\n");
return 0;
●如果在 if 后面还有语句,它们在 if 结束后会执行,无论条件如何
else=f否则的话
if ( bill >= price ) {
printf ("应该找您:%d\n ", bill - price );
} else {
printf("你的钱不够\n")
}
if到最后的大括号是一句话
6.比较数的大小
方案一
int a,b;
printf ("请输入两个整数:");scanf ("%d %d ", &a , &b);
int max = 0;
if ( a > b ) {
max = a ;} else {
max = b;
}
printf ("大的那个是 %d \ n ", max );
方案2
int a , b ;
printf ("请输入两个整数:");scanf ("%d %d ", &a , &b );
int max = b;
if ( a > b ) {
max = a ;
}
printf ("大的那个是%d \ n ", max );
区别:一个更易理解,一个更聪明。
7.if 语句再探:if和else后面也可以没有{}而是一条语句
if 语句
●一个基本的 if 语句由一个关键字 if 开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}'之间的若干条语句。如果表示条件的逻辑表达式的结果不是零,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的其他语句。
if语句这一行结束的时候并没有表示语句结束的“;”,而后面的赋值语句写在if的下一行,并且缩进了,在这一行结束的时候有一个表示语句结束的“;’'.这表明这条赋值语句是if语句的一部分,if语句拥有和控制这条赋值语句,决定它是否要被执行。
eg:if(total > amount)
total += amount+10;
8.嵌套的if-else:在if或else后面执行的还是if语句
找三个数中的最大
int a , b ;
scanf (" %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);
9.嵌套的判断
●当 if 的条件满足或者不满足的时候要执行的语句也
可以是一条 if 或 if - else 语句,这就是嵌套的 if 语句
if ( code = READY )
if ( count <20)
printf (“一切正常\ n ");
elseprintf (“继续等待\ n ");
else 的匹配
● else 总是和最近的那个 if 匹配,但是加了大括号就不一样了。
if ( code = READY ) {
if ( count <20)
printf ("一切正常\ n ");
} else
printf ("继续等待\ n ");
可通过调试知道。此时else与第一个if相匹配,与第二个无关。
10.缩进
●缩进格式不能暗示 else 的匹配
if ( code == READY )
if ( count <20)
printf (“一切正常\ n ");else
printf (“继续等待\ n ");
此时这个程序由调试可知,else是第二个if的,虽然else与第一个if对齐