C语言 if语句

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 ");
     else 

         printf (“继续等待\ 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对齐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值