这个系列是用来解决学校C语言课程的,并不适用于ACM和OI
本系列博客分为2部分,分别是 C语言程序设计笔记(网课) 和 课堂总结(线下课)
欢迎转载ssw02的博客: https://www.cnblogs.com/ssw02/p/15938920.html
说在前面,有了前面两节的铺垫,是时候开始加速了哈
代码中的//
表示注释,该注释符号所在行后面的内容将不对程序本身产生影响
代码中/* */
这两个符号中间所有内容均为注释,可以跨多行
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> using namespace std; 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; }