if语句总结

if语句总结这只是我学习 c 语言的笔记 写的也是我关于这一章节的一些理解 肯定会有不严谨的地方 欢迎大家的指正

大家好,欢迎来到IT知识分享网。

if语句总结

这只是我学习c语言的笔记,写的也是我关于这一章节的一些理解,肯定会有不严谨的地方,欢迎大家的指正

if语句的语法

if(表达式)

​ 语句

只要表达式的结果为真(非0)就执行语句;反之表达式的结果为假(0)就不执行语句

例子:输入一个整数,判断这个整数是不是5的倍数

#include<stdio.h> int main() { 
    int i = 0; scanf("%d",&i); //判断 if(i%5==0)//如果输入的表达式的结果为真,就执行大括号中的语句 { 
    printf("%d是5的倍数",i); } return 0; } 

打印效果如下

在这里插入图片描述

因为我们输入了一个10,然后if后面括号里面的表达式就会判断是真还是假,因为10可以被5整除,所以执行if中的语句。

else

上述代码中只表示了这个整数能被5整除的情况,如果不能被5整除的时候该怎么样表示呢?

这就要用if…else语句

if…else的语法

if(表达式)

语句1

else

语句2

else是否则的意思,表示如果if后面的表达式为的话就会执行语句1,如果为假就会执行语句2

例子:输入一个整数判断是不是奇数,如果是奇数打印YES,否则打印NO。

#include<stdio.h> int main() { 
    int num = 0; scanf("%d", &num); if (num % 2 == 0) { 
    printf("NO"); } else { 
    printf("YES"); } return 0; } 

if语句大括号的使用

在if语句中,if默认只能执行一条语句,要想执行多条语句可以用大括号括起来使其变成一个代码块

比如:

在这里插入图片描述

在这里插入图片描述

可以看出因为if后面跟了多条语句所以使得代码无法运行,所以需要在if后面跟一个大括号,将多条语句组成一个代码块

在这里插入图片描述

这时代码就可以运行了

在这里插入图片描述

if的嵌套

在if else语句中else可以和另一条jf连用

比如:输入一个整数,判断这个数是正数还是负数,如果是正数再判断这个数是奇数还是偶数,如果是负数则打印负数

#include<stdio.h> int main() { 
    int num = 0; scanf("%d", &num); if (num > 0) { 
    if (num % 2 == 0) { 
    printf("%d是偶数", num); } else { 
    printf("%d是奇数",num); } } else if (num < 0) { 
    printf("%d是负数", num); } else { 
    printf("这个数等于0"); } return 0; } 

上面这段代码首先判断这个数大于0的情况,如果这个数能被二整除这个数就是偶数,否则就是奇数,如果这个数小于0的话就跳到了else if 后面的这个语句,就会表达这个数是负数,如果输入的这个数不大于0也不小于0的话,那就只能是0了,所以又有了一个else来表达这个数是0的情况,而下面就是运行的结果。

在这里插入图片描述

在这里插入图片描述

再比如现在想要记录某班的成绩,90100分评价是A,8090评级是B,7080评级是C,6070评级是D,0·60是不合格

代码如下:

#include<stdio.h> int main() { 
    int cj = 0; scanf("%d", &cj); if (cj >= 90 && cj <= 100)//当成绩在90~100时 { 
    printf("评级为A"); } else if (cj >= 80 && cj < 90)//当成绩在80~90时 { 
    printf("评级为B"); } else if (cj >= 70 && cj < 80)//当成绩在70~80时 { 
    printf("评级为C"); } else if (cj >= 60 && cj < 70)//当成绩在60~70时 { 
    printf("评级为D"); } else { 
    printf("不合格");//当成绩在0~60时 } return 0; } 

在这里插入图片描述

悬挂else

在有多个if和else的情况下else始终与它最近的if匹配

例子:

#include<stdio.h> int main() { 
    int i = 9; if (i >= 1 && i <= 6) if (i >= 6 && i <= 9) printf("初中生"); else printf("其他年级的学生"); return 0; } 

我们的本意是i=9我们要打印初中生,但是实际结果是这样的
在这里插入图片描述

屏幕上面什么都没有打印

因为i=9要先执行第一条if但是第一条if中没有包含i=9的情况,所以结果为假直接跳出了if语句,因为else匹配的if是第二个if

其实正确的书写规范是这样的

int main() { 
    int i = 9; if (i >= 1 && i <= 6) { 
    if (i >= 6 && i <= 9) { 
    printf("初中生"); } else { 
    printf("其他年级的学生"); } } return 0; } 

这样可以直观的看出else匹配的是哪个if

关系操作符

c语言中用于比较的表达式。称为“关系表达式”,里面使用的运算符称为“关系运算符”,主要有:

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

关系表达式返回的值通常是或者1,用来表示真假

比如:1<2返回的值就是1,1>2返回的值就是0

用代码表示是这样的:

#include<stdio.h> { 
    int a = 1; int b = 2; printf("%d", a > b); return 0; } 

因为2肯定是比1大的所以表达式的结果为假,返回的就是0

#include<stdio.h> int main() { 
    int a = 1; int b = 2; printf("%d", a < b); return 0; } 

如果将小于号换成大于号,因为1是比2小的,所以结果为真,返回的值就是1

注意:==是相等运算符,=是赋值运算符,两者表达的意思是截然相反的

int a=0; if(a==1) printf("你好"); 

这段代码如果用相等运算符是不会打印任何东西的,因为前面将0赋值给了变量a,if后面的表达式只有在a==1的情况下才会成立,所以if的结果为假

int main() { 
    int a = 0; if (a = 1) printf("你好"); return 0; } 

但是换成赋值操作符的话,就相当于在if后面的表达式将1赋值给了a,而1代表着真,这段代码就会运行

多个关系运算符不适合连用

int main() { 
    int a = 1; int b = 5; int c = 3; if (a < b < c) { 
    printf("%d<%d<%d", a, b, c); } return 0; } 

按理来说,因为1<5<3,这个说法是错的,但是上面这段代码却可以运行,因为c语言中它会先判断a<b,因为1是肯定小于5的,所以返回了1,然后又用1和c进行了比较,1也是小于c的所以程序会正常运行

如果想要表达三个数之间的大小的话

a<b&&b<c 

这样是符合c语言的运算规则的

例子:如果你一次考试,考了90~100的话,爸妈奖励你糖吃

 int main() { 
    int a = 95; if (a >= 90 && a <= 100) { 
    printf("爸妈奖励糖吃"); } return 0; } 

在这里插入图片描述

条件操作符

格式: 表达式1 ? 表达式2:表达式3

如果表达式1为真,就计算表达式2,不计算表达式3

如果表达式1为假,就计算表达式3,不计算表达式2

int main() { 
    int a = 0; int b = 0; scanf("%d", &a); b = (a > 10 ? 5 : -5); printf("b=%d", b); return 0; } 

这段代码的意思就是如果a的值大于10,那么b就等于5,否则b就等于-5

逻辑操作符&& || !

!逻辑取反运算符

改变表达式的真假

int main() { 
    int a = 1; if (!a) { 
    printf("你好"); } return 0; } 

刚开始将1赋值给了a,然后if后面的表达式给了一个逻辑取反运算符,就相当于if的结果是假的,即不会执行语句

在这里插入图片描述
ef8a83824d.png#pic_center)

相反,如果一开始将0赋值给a,那么就会执行if中的语句
在这里插入图片描述

逻辑与运算符&&

a b a&&b的返回值
!0 !0 1
!0 0 0
0 !0 0
0 0 0

如果a和b都为真,结果为真。如果a和b有一个为假,结果为假。如果a和b有一个为假,结果为假。

比如想表达1念及到6年级是小学生

int main() { 
    int nj = 3; if (nj >= 1 && nj <= 6) { 
    printf("小学生"); } return 0; } 

因为3同时满足大于大于1小于等于6的条件所以结果为真

在这里插入图片描述

如果将nj的值改成7,7确实比1大,但是他也比6大,有一个条件不满足,所以结果为假

逻辑或运算符||

a b a||b的返回值
!0 !0 1
0 !0 1
!0 0 1
0 0 0

如果a,b都为真,结果为真。如果a,b有一个结果为真,结果为真,如果a,b结果都为假,结果为假。

例子:在屏幕上打印冬季

int main() { 
    int mouth = 1; if (mouth == 1 || mouth == 2 || mouth == 12) { 
    printf("冬季"); } return 0; } 

因为1满足第一个条件,所以整个表达式的结果都是真的,正常执行语句

在这里插入图片描述

练习:输入一个数,判断是否是闰年

闰年的判断条件:1 可以被4整除,并且不能被100整除

​ 2 可以被400整除(二者完成其一即可)

int main() { 
    int year = 0; scanf("%d", &year); if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { 
    printf("%d是闰年", year); } else { 
    printf("%d不是闰年", year); } return 0; } 

假设year的值是2000,虽然因为2000除以100等于了0,但是它可以被400整除,满足year%400==0,所以执行if语句

短路求值

因为逻辑运算符的计算特点是先对左边的表达式进行求值,再对右边的进行求值,如果左边的表达式符合逻辑运算符的条件,右边则没必要计算了,这种情况就是短路

if(a>1&&a<5) 

对于与运算符来说,如果左操作数(a>1)的条件都不满足的话就没必要执行右操作数(a<5)了

if(year%4==0||year%400==0) 

对于或运算符来说,如果左操作数(year%4==0)的条件已经满足了,那么就不用执行右操作数

ar);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{

printf(“%d是闰年”, year);
}
else
{

printf(“%d不是闰年”, year);
}

return 0; 

}

 假设year的值是2000,虽然因为2000除以100等于了0,但是它可以被400整除,满足year%400==0,所以执行if语句 短路求值 因为逻辑运算符的计算特点是先对左边的表达式进行求值,再对右边的进行求值,如果左边的表达式符合逻辑运算符的条件,右边则没必要计算了,这种情况就是短路 ```c if(a>1&&a<5) 

对于与运算符来说,如果左操作数(a>1)的条件都不满足的话就没必要执行右操作数(a<5)了

if(year%4==0||year%400==0) 

对于或运算符来说,如果左操作数(year%4==0)的条件已经满足了,那么就不用执行右操作数

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151946.html

(0)
上一篇 2025-03-10 22:26
下一篇 2025-03-10 22:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信