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 > 35 > 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;
}
posted @ 2022-02-26 12:11  蓝银杏-SSW  阅读(442)  评论(0编辑  收藏  举报
//结束