C语言程序设计笔记3:判断
这个系列是用来解决学校C语言课程的,并不适用于ACM和OI
本系列博客分为2部分,分别是 C语言程序设计笔记(网课) 和 课堂总结(线下课)
欢迎转载ssw02的博客: https://www.cnblogs.com/ssw02/p/15994555.html
C语言程序设计笔记3-1
说在前面,有了前面两节的铺垫,是时候开始加速了哈
代码中的//
表示注释,该注释符号所在行后面的内容将不对程序本身产生影响
代码中/* */
这两个符号中间所有内容均为注释,可以跨多行
1.关系运算
我们先了解以下这些基本的关系运算
A == B 判断A B是否相等
A != B 判断A B是否不等
A > B A < B 判断 A是否大于(小于)B
A >= B A <= B 判断 A是否大于等于(小于等于)B
如果上述关系成立(语句为真),则会返回值true(1),否则返回值false(0)
我们可以尝试运行以下程序来进行验证
#include<stdio.h>
int a , b ;
int main(){
scanf("%d%d",&a,&b) ;
printf("%d %d\n",a,b) ;
printf("a等于b? %d\n",a==b) ;
printf("a不等b? %d\n",a!=b) ;
printf("a大于b? %d\n",a>b) ;
printf("a小于b? %d\n",a<b) ;
return 0 ;
}
这里我们要注意
关系运算的优先级低于算数运算
例如7 >= 3 + 4
这个语句返回值为true,因为会先计算 3 + 4
关系运算的优先级高于赋值运算
例如int r = a > 0
这个语句会先判断 a是否大于0 , 再将返回值(1或者0)赋值给 r
关系运算中 ==和!=的优先级更低,相同优先级下从左到右进行
例如 4 > 3 == 5 > 4
这句话返回值为true,因为 4 > 3
和 5 > 4
的值都是true(1),最后再是1 == 1
返回true
再例如6 > 5 > 4
的值为 0 , 因为相同优先级,从左到右,6 > 5
为true, 原式变为 1 > 4
,明显为false,所以最后的值为0
2.if判断语句
if判断语句是C语言中基础但又非常重要的一类语句。if表示如果,但在计算机中if往往用作判断
常见的写法有如下几种
if后面接单独一个语句
if(条件)语句1;
例如
if( Apple_amount == 5 )printf("有5个苹果");
if后面接多个语句(一定要用大括号括起来,大括号里只写一个语句也可以)
if(条件){ //执行代码块
语句1;
语句2;
.....
}
例如
if( Apple_amount < 5 ){
Apple_need = 5 - Apple_amount ;
printf("我们还需要%d个苹果",Apple_need);
}
if else 判断语句 ,如果条件为true,执行if后面跟着的语句,如果为false,执行else后面跟着的语句
if(条件)语句1(可以换成执行代码块)
else 语句2(可以换成执行代码块)
例如
if( Apple_amount >= 5 ){
printf("我们已经有足够的苹果");
}
else{
Apple_need = 5 - Apple_amount ;
printf("我们还需要%d个苹果",Apple_need);
}
多重if else 嵌套的语句
if(条件1){
if(条件2)执行代码块1
else 执行代码块2
}
else{
if(条件3)执行代码块3
else if(条件4)执行代码块4
......
}
例如
if( Apple_amount >= 5 ){
if( Bad_Apple == 0 )printf("我们按照要求收到了足够的苹果,没有坏苹果");
else printf("我们按照要求收到了足够的苹果,没有坏苹果");
}
else{
if( Bad_Apple == 0 )printf("我们收到的好苹果不够,没有坏苹果");
else if( Bad_Apple == Apple_amount )printf("我们收到的苹果不够,而且全部是坏苹果");
else printf("我们收到的苹果不够,而且有坏苹果");
}
switch多选择语句,当面临的单一条件选择比较多时,switch更方便,而且运行更加快捷
switch(表达式){
case 值1: 执行代码块1;break;
case 值2: 执行代码块2;break;
case 值3: 执行代码块3;break;
....
default: 执行代码块n+1; //可写可不写,当不满足上述所有条件时执行
}
//switch的表达式必须有值,用break语句会及时弹出,阻止运行接下来的所有语句和判断。
例如:
switch( Apple_amount ){
case 0 : printf("我们没有拿到任何苹果") ; break ;
case 5 : printf("我们拿到了想要的数量") ; break ;
default : printf("我们拿到的苹果数量不对") ;
}
如果条件有多个需要同时满足用 && 连接 每一个条件
例如:if( A>5 && A<9 )printf("A介于5-9之间")
如果条件有多个需要满足其一即可用 || 连接 每一个条件
例如:if( A>9 || A<5 )printf("A不介于5-9之间")
3.习题答案
1.判断该语句能否过编译if ( 1<=n<=10 );
能
2.以下语句是否表示n属于[1,10]: if ( 1<=n<=10 );
否,正确表示为if( 1<=n && n <= 10 )
3.写出程序的输出结果:
int i,j,k;
i=5; j=10; k=1;
printf("%d", k>i<j);
//答案为1,相同优先级从左到右
int i,j,k;
i=2;j=3;
k = i*j==6;
printf("%d\n", k);
//答案为1,先计算乘法再 判断是否相等 最后赋值
int i,j,k;
i=3;j=2;k=1;
printf("%d", i<j == j<k);
//答案为1,先判断 i < j 和 j < k , 都是false(0),相等,最终答案为true(1)
4.场景应用标程
#include <stdio.h>
int main()
{
printf("请输入月份:");
int month;
scanf("%d", &month);
switch ( month )
{
case 1: printf("January\n"); break;
case 2: printf("February\n"); break;
case 3: printf("March\n"); break;
case 4: printf("April\n"); break;
case 5: printf("May\n"); break;
case 6: printf("June\n"); break;
case 7: printf("July\n"); break;
case 8: printf("August\n"); break;
case 9: printf("September\n"); break;
case 10:printf("October\n"); break;
case 11:printf("November\n"); break;
case 12:printf("December\n"); break;
default:printf("不合法输入\n");
}
return 0;
}