目录
前言
九月四、五号笔记
一、选择结构中的关系运算
1.关系运算符及其优先级
关系运算符是用来对两个数值进行比较的比较运算符。
C语言提供6种运算符:
>(大于) >=(大于或等于)
<(小于) <=(小于或等于)
==(等于) !=(不等于)
算数运算符 高
关系运算符 ↑
赋值运算符 低
2.关系表达式
用关系运算符将两个表达式连接起来的式子。
关系表达式的值是一个逻辑值,即“真”或“假”。
在C的关系运算中,以“1”代表“真”,以“0”代表“假”。
若变量a=3,b=2,c=1,则: 表达式a>b的值为“真”,表达式的值为1. 表达式a>b==c的值为“真”(因为a>b的值为1),表达式的值为1。 表达式b+c<a的值为“假”,表达式的值为0。 表达式a=b>c的值为1(b>c的值为1,赋给a)。 表达式a==b>c的值为0(b>c的值为1,不等于a)。 注意:不能将关系运算符“==”误写成赋值运算符“=”。 |
二、选择结构中的逻辑运算
1.逻辑运算及其优先级
C语言提供了3种逻辑运算符:
运算符 | 含义 | 举例 | 说明 |
---|---|---|---|
&& | 逻辑与 | a&&b | 如果a和b都为真,则结果为真,否则为假 |
∣∣ | 逻辑或 | a∣∣b | 如果a和b中有一个或一个以上为真,则结果为真,两个都为假时,结果为假 |
! | 逻辑非 | !a | 如果a为真,则!a为假,如果a为假,则!a为真 |
逻辑运算符的优先次序:
由低到高依次为:∣∣→&&→!
关系、算数、逻辑和赋值运算符的优先级:
! (高) 算术运算符 关系运算符 ↑ &&和∣∣ 赋值运算符 (低) |
2.逻辑表达式
①用逻辑运算符将关系表达式或逻辑量连接起来的式子。
x>1&&x<10
a+b>c&&a+c>b&&b+c>a
age>=70∣∣age<=12
1&&0 !0 !1
!4 4&&5 'c'∣∣'d'
数值0的逻辑值为假,非0的数,逻辑值为真 |
②逻辑表达式的值是一个逻辑值,即“真”或“假”,以“1”代表“真”,以“0”代表“假”。
③在对逻辑表达式的求解中,并不是所有的逻辑运算符都被执行。
a&&b&&c,只有a为真,才继续右面的运算。
a∣∣b∣∣c,只有a为假,才继续右面的运算。
三、C语言中的选择结构语句
C语言中,选择结构语句可分为if语句和switch语句
1.if语句
①if语句的三种形式
-if语句 单分支结构
-if...else语句 双分支结构
-if...else if...else语句 多分支结构
②if语句——单分支结构
例:如何判断一个数为正数?
如果一个数大于0,那么这个数就是正数。
if a >0 a是正数
if(a>0) a是正数
if(表达式) {语句块}
-语法格式
if(表达式)
{
语句块
}
-如果表达式的值为真,则执行语句块。
-在程序设计中处理选择问题的关键在于进行条件判断,即如果满足某种条件,就进行相应的处理。
-如何判断一个数为正数?
#include <stdio.h>
int main()
{
int a;
scanf_s("%d", &a);
if (a > 0)
{
printf("%d是正数.\n", a);
}
}
2.if语句——双分支结构
-语法格式
if(表达式)
{
语句1
}
else
{
语句2
}
if...else if...else语句——多分支结构
用于对多个条件进行判断,从而进行多种不同的处理。
-语法格式
if(表达式1) {语句块1}
else if(表达式2){语句块2}
else if(表达式3 ){语句块3}
······
else if(表达式n){语句块n}
else {语句块m}
举例:字符类型判断
从键盘输入任意一个字符,判断该字符是英文字母(不区分大、小写)、数字字符还是其它字符,并分别输出相应的信息。
若输入字母,则屏幕显示:It is an English character.
若输入数字,则屏幕显示:It is a digit character.
若输入其它字符,则屏幕显示:It is other character.
英文字母的判断条件 c>='a'&&c<='z' ∣∣c>='A'&&c<='Z' 表达式1
数字字符的判断条件 c>='0'&&c<='9' 表达式2
#include<stdio.h>
int main()
{
char c;
printf("Input a character: ");
scanf_s("%c1", &c,sizeof(int));
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
printf("It is an English character.\n");
else if (c >= '0' && c <= '9')
printf("It is a digit character.\n");
else
printf("It is other character.\n");
return 0;
}
3.if语句的嵌套
临近原则:else和if成对出现,并且总是与最近的未配对的if配对。
建议:在if后面使用{}将要执行的语句括起来,避免程序代码混乱。
-正确使用if语句的嵌套
例:有一函数
编写程序,要求输入一个x后,输出y值。
解法1:
#include<stdio.h>
int main()
{
int x, y;
printf("please input x:");
scanf_s("%d", &x);
if (x < 0) y = -1;
else if (x == 0) y = 0;
else y = 1;
printf("x=%d,y=%d\n", x, y);
return 0;
}
解法2:
#include<stdio.h>
int main()
{
int x,y;
printf("please input x:");
scanf_s("%d",&x);
if(x!=0)
if(x<0) y=-1;
else y=1;
else y=0;
printf("x=%d,y=%d\n",x,y);
return 0
}
4.switch语句
-switch语句的一般形式
switch(表达式) 整数、字符、枚举类型
{
case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2;break;
······
case 常量表达式n:语句块n;break;
default:语句块n+1
}
-执行流程:
- 首先计算表达式的值;
- 与各个case后的常量表达式的值进行比较,当表达式的值于某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
- 如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句。
#include<stdio.h> int main() { int a; printf("Input integer number:"); scanf_s("%d", &a); switch (a) { case 1:printf("Monday\n"); break; case 2:printf("Tuesday\n"); break; case 3:printf("Wednesday\n"); break; case 4:printf("Thursday\n"); break; case 5:printf("Friday\n"); break; case 6:printf("Saturday\n"); break; case 7:printf("Sunday\n"); break; default:printf("error\n"); } return 0; }
在使用switch语句时应注意以下几点:
①表达式的值为整数、字符、枚举类型。
②常量表达式的值必须互不相同,否则会出现分支现象。
③case后面的常量表达式只起标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。一般情况下需用break语句跳出switch语句。
④语句块可以是一条语句,或复合语句,可以不用花括号{}。
⑤各个case和default出现的先后次序,并不影响执行结果,习惯上将default子句放在switch的末尾。
⑥多个case标号可共用一组执行语句。