]国家计算机二级C语言讲义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当型循环:先判断,后执行。
至少执行一次。
直到型循环:先执行,后判断。
至少执行一次 二级C 语言讲义
第一章 程序设计的基本概念
一、基本概念:
1、计算机语言:对于计算机来说,它只能接受和处理0和1代码构成的二进制指令或数据,由于这种形式的指令
是面向机器的,因此也称为“机器语言”。
计算机语言
2、源程序:我们把高级语言编写的程序称为源程序。
3、目标程序:二进制代码表示的程序称为“目标程序”。
4、编译程序:如何把源程序转换成机器能够接受的目标程序,软件工作者编制了一系列的软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。
这种具有翻译功能的软件称为编译程序。
5、C 源程序:用C 语言构成的指令序列称为C 源程序。
6、C 语言的代码编写:按C 语言的语法编写C 程序的过程,称为C 语言的代码编写。
练习:
1、 C 语言程序文件名的后缀是();经过编译后,生成文件的后缀是();经过连接后,生成文件的后缀是()
2、 在TURBO C 中用Run 命令运行一个C 程序时,所运行的程序的后缀是()。
7、程序设计的步骤:确定数据结构;确定算法;编码;上机调试程序;整理并写出文档资料; 8、算法:为解决某个特定问题而采取的确定且有限步骤。
一个算法应当具有以下五个特点:
1)、有穷性: 2)、确定性: 3)、可行性: 4)、有零个或多个输入 5)、有1个或多个输出。
第二节 流程图
一、传统的结构化流程图: 二、N —S 流程图: 1、结构化的语言 1)、顺序结构 2)、选择结构 3)、循环结构
第二章 C 程序设计的初步知识 第一节 简单C 语言的构成和格式1
一、菜单栏(F10) 1、file :(文件): 1)、load :(F3)打开文件 2)、new :新建文件 3)、save :(F2)保存 4)、write to :另存为 5)、quit (Alt+x )退出当前编辑环境 2、Run (运行) 1)Run(Ctrl+F9):
高级语言: 远离硬件
低级语言: 贴近硬件
2)、User screen(Alt+F5):
第一节C语言的格式2
(一)、构成
一、命令行
1、命令行必须以“#”开头,最后不能加分号结尾,因为它不是C语言的语句。
2、一对双引号中间的stdio.h是系统提供的文件名,该文件中包含着有关输入输出函数的信息。
(头文件)
二、主函数
1、main是主函数名,C语言规定必须用main作为主函数名。
2、主函数后的一对括号中间可以是空的,但这一对括号不能省略。
3、一个C程序可以包含任意多个不同名字的函数,但必须有且只有一个主函数。
4、C程序的运行总是从主函数开始运行的。
三、函数体
1、定义部分
2、执行部分
3、可执行语句数量不限,但必须放在定义语句后面
(二)格式:
1、C语句必须以分号结束。
它是C语句的一部分,而不是语句间的分隔符。
2、注释符号“/*”“*/”必须成对出现,且不允许出现嵌套情况。
“/”和“*”之间不通话有空格。
第二节标识符的组成和分类3
一、什么是标识符
1、组成:字母、数字和下划线,而且不能以数字开头。
2、区分大小写
3、标识符长度:8位
二、标识符的分类
1、关键字:如:if while等共39个,指系统已经给定义好含义的。
2、预定义标识符:如:printf(输出)、scanf(输入)等。
3、用户定义标识符:
第三节整型数据
一、常量
1、定义:在程序运行中,不能改变的量。
2、分类:
1)、整型常量
2)、实型常量
3)、字符型常量
4)、字符串常量
二、变量
1、概念:其值可以改变的量。
是由变量名和变量值构成的。
2变量的实质:内存中的存储单元。
3、变量应先定义后使用
4、特性:
1)、凡未被事先定义的,不作为变量名。
2)、每一变量被指定为一确定类型,在编译时就能为其分配相同的存储单元。
3)、指定每一变量属于哪一类型,这就便于在编译时据此检查该变量所进行的运算是否合法。
三、整型常量
1、整型常量的表示方法:十进制、八进制、十六进制。
2、三种进制的表示方法:
1)、十进制数:“逢十进一”
2)、八进制数:“逢八进一”
a)、八进制数用数字“0”开头。
(注意:不是字母o)
b)、八进制数只能用合法的八进制数字0—7表示,但当输入非法数字时C程序不会提示,只是得不到正确的结果。
3)、十六进制数:用数字0和字母X(大小写均可)开头十六进制只能含有合法的十六进制数字0—9字母a—f。
3、进制之间的转换
4、整型常量的分类:短整型、长整型、基本整型、无符号型。
四、整型变量
1、整型变量的分类:(同整型常量)
2、整型变量的定义:
1)、基本整型变量类型用关键字int进行定义.
2)、一个定义语句必须用分号结束,在一个定义语句中可同时定义多个变量,且之间用逗号隔开。
3)、一般微机为基本型整型开辟2个字节的存储单元,基本整型允许存放的数值范围是-32768——32767。
4)、当程序中用以上方式定义变量i,j,k时,编译程序会为变量i,j,k都开辟存储单元,但并没有在存储单元中存放任何初值,因此这些存储单元中原有的信息垃圾并没有被清除。
这时,变量中的值是无意义的,称变量时“无意义”。
5)、C语言规定,可以在变量定义的同时,给变量赋初值,也称为变量初始化。
五、整型数据的分类
1、分类:
int 基本整型
singned有符号整型short 短整型
long 长整型
unsigned int 无符号基本整型
unsigned无符号整型unsigned short 无符号短整型
unsigned long 无符号长整型
2、若要表示一个长整型常量,则应该在一个整型常量后面加一个大写或小写的字母L做后缀。
注意:如果一个足够大的数,即使值在长整型范围内,但数字后未加字母L,也不可代表长整数。
3、无论是短整型还是长整型,都被识别为有符号整数;无符号整数应在数字末尾加上大写或小写的U,长整型无
符号整数常量,加大写或小写的LU,并且无符号常量不能表示成小于0的负数。
六、整数在内存中的存储形式
1、存储单位
1)、在计算机中,内存存储器的最小存储单位称为“位(bit)”,每一个位中存放“0”或“1”,因此成为二进制位,大多计算机机把8个二进制位组成一个“字节(byte)”
2)、如果一台计算机系统以两个字节(16个二进制位)来存放一条机器指令,就称这台计算机字长为16位。
3)、最右边的一位称为“最低位”,最左边的一位称为“最高位”。
4)、若是正整数最高位是“0”,负整数最高位是“1”。
最高位
最低位 例:有符号数32767在内存中的存储形式为: 2、存储方式 a )、语言中,对于负整数在内存中是以整数的“补码”形式存放。
b )、两个字节存放的最小整数是-32768,在内存中的存储形式:1000000000000000 例(一)正整数转补码。
己知十进制数5求其二进制形式和其相反数-5的二进制形式。
解:1)、求5的二进制形式,并把5用一个字节的二进制形式。
2)、求反码,即把各位取反。
3)、求补码,即把最低位加1 (二)补码转正数
己知内存中以补码形式存放的二进制数11111010,要求求出十进制数。
解:1)、求11111010反码。
2)、根据反码算出十进制正整数的形式。
3)、因为只有负数才有补码存在,所以: a )、在所得十进制数前加负号“-5”。
b )、让所得负数减1“-6” 七、有符号数在内存中的形式:
000000
10000000001
1111110111111111
1000000000000000=215 0111111111111111=215-
1 同理:用补码求反码可求出来结果,-32768=-2
八、无符号整数在内存中的形式: 注:用两个字节存放一个整数时,若说明为无符号整数,其中最高位不再用来存放整数的符号,16个二进制位全部用来存放整数,因此无符号整数不可能是负数。
这时,16个二进制位中全部都是1时,它所代表的整数就是最大数65535,内存中的形式:“1111111111111111”。
a )、-1的存储格式:
1、1的存储格式为0000000000000001
2、0000000000000001的反码为1111111111111110
+
3、0000000000000001的补码为1111111111111111;所以-1的存储格式为:“1111111111111111”。
b)、5535的存储格式为1111111111111111。
所以有符号整型和无符号整型65535在内存中的存储格式相同。
第四节 实型数据
一、实型常量
1、小数形式:即数学中常用的实数形式,由数字和小数点组成。
2、指数形式: 1)、这种形式类似于数学中的指数形式。
在数学中,一个数可以用幂的形式表示。
在C 语言中则以“e ”或“E ”
后面跟一个整数来表示以10为底的幂数。
2)、C 语言语法规定,字母E 或e 之前必须有数字,且E 或e 后面的指数必须为整数。
二、实型变量
1、C 语言中实型变量分为单精度和双精度两类,分别用类型名“float ”和“double ”定义.
2、两者间的区别: 1)、在一般计算机系统中,为float 类型的变量分配4个字节的存储单元,为double 分配8个字节的存储单元。
2)、在turbo C 中单精度实数的取值范围是-1038——1038之间,并提供7位有效位,小于-1038的数被处理成0。
双
精度的取值范围是-10308——10308之间,并提供15—16位的有效位,小于-10308的数被处理成0。
3)、在程序中一个实数可以用小数形式表示,也可以用指数形式表示。
但在内存中,实数一律是以指数形式存放的。
4)、在计算机内存中可以精确的存放一个整数,不会出现误差,但整型数值的存放范围较小,使用实型数的范围大,
但往往存在误差。
第五节 算术表达式和赋值表达式
一、基本运算符
在C 语言中基本的算术运算符是:+、—、*、/、%,分别为加、减、乘、除和求余运算符。
1、写运算符需要两个运算对象,称为双目运算符,除求余外,对象可是整型也可是实型。
2、求余运算符的运算对象只能是整型,在“%”左侧的为被除数,运算结果是两数相除所得的余数。
当运算量为
负数时,所得结果的符号与被除数相同。
3、“”和“”也可用作单目运算符,运算符必须出现在运算量的左边,运算量可为整型,也可为实型。
4、双目运算符两边的运算类型必须一致才能进行操作。
所得结果类型与运算类型一致;如果两边运算数的类型不
一致,系统将自动把两边转换成相同类型后,进行计算: a )、如果一边是整型数,一边是实型数时,系统将自动把整型转换成实型数。
b )、如果一边是长整型,一边是短整型,系统将自动把短整型转换成长整型。
c )、如果一边有符号型,另一边是无符号型,系统将自动把有符号型转换成无符号型。
d )、在C 语言中,所有实数的运算均以双精度方式进行,若是单精度数,则在尾数部分补0,使之转化为双精度。
二、算术运算符的优先级:
( ) +、 — +、—、*、/
三、算术运算符和圆括号的结合性
只有单目运算符“+”和“—”的结合是从右到左,其余都是从左到右。
四、算术表达式
1、定义:用算术运算符和一对圆括号将运算量连接起来的符合C 语法的表达式称为算术表达式。
2、运算规则和要求: 1)、在算术表达式中,可使用很多层括号,但左右括号必须配对。
运算时由内向外依次计算。
2)、在算术表达式中,若包含不同优先级的运算符,则按运算符的结合方向进行。
五、强制类型转换表达式
1、强制类型转换表达式的形式:(类型名)(表达式)。
2、“类型名”为强制类型转换运算符,可以利用它将一个表达式的值转换成指定的类型。
单目 双目
同级 同级
高 低
例:(int).324=3 (double)(10%3)=1.0
六、赋值运算符和表达式
1、定义:
1)、在C语言中,“=”符号称为赋值运算符,有赋值运算符组成的表达式称为赋值表达式。
2)、赋值形式:变量名=表达式。
3)、自右向左读
4)、内存中当前的数据就是最后一次所赋的那个数据。
2、说明:
1)、赋值运算符的优先级别只高于逗号运算符,比其它任何运算符的优先级别都低,且具有自右向左的结合性。
2)、赋值运算符不同于数学中的“等于号”,这里不是等同的关系,而是进行“赋予”的操作。
例:a=13。
3)、赋值表达式x=y的作用是,将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉;赋值后,y变量中的内容保持不变。
此表达式读做“把右边变量中的值赋予左边变量”。
七、复合的赋值表达式
1、概念:在赋值运算符之前加上其它运算符可以构成复合赋值运算符。
C语言规定可以用10种复合赋值运算符,
其中与算术运算有关的复合运算符的优先级别相同。
八、赋值运算符中的类型转换
1、在赋值运算中,只有在赋值号右侧表达式的类型与左侧变量的类型完全一致时,赋值操作才能进行。
2、如果赋值运算符两侧的数据类型不一致。
在赋值前,系统将自动先把右侧的表达式求得的数值,按赋值号左边
变量的类型进行转换,也可以用强制类型转换的方式。
注:当赋值号左这的变量为短整型,右边的值为长整型时,短整型变量只能接受长整型数据最低位上的两个字节中的数据,高位上的两个字节的数据将丢失。
则a的值为-32768。
例:int a;unsigned long b;b=98304;a=b;printf(“%d\n”,a);
第五节自加自减运算
一、自加自减运算符
1、自加运算符“”和自减“”的运算结果是使运算对象的值增加或减少1。
自加或自减运算符本身也是一种赋值
运算符。
i++⇔i=i+1 i--⇔i=i-1
2、自加、自减运算符是单目运算符,运算对象可以是整形变量,也可以是实型变量。
不能是常量和表达式,因为
不能给常量或表达式赋值。
3、自加、自减运算符既可做为前缀运算符也可作为后缀运算符而构成一个表达。
但无论是做为前缀还是后缀运算
符,对于变量本身来说自增1或自减1都具有相同效果,但做为表达式来说却有不同的值。
1)、++i或--i在使用之前先使i的值增1或减1。
2)、i++或i—在使用之后使i的值加或减1,即i值变,表达式的值不变。
例如:i=2;a=i++;⇒i=3;a=2 i=2;a=++i;⇒i=3;a=3
4、自加和自减运算符的结合方向是自右向左。
二、逗号运算符和逗号表达式
1、“,”是C语言提供的一种特殊运算符,用逗号运算符连接起来的式子称为逗号表达式。
逗号表达式的一般形式
为:表达式1,表达式2,……,表达式n.
2、说明:
1)、逗号运算符的优先级别最低。
2)、逗号表达式从左到右进行运算。
最后一个表达式的值就是此逗号表达式的值。
例:i=3,i++,++i,i+5
第六节课后习题和典型例题讲解
例1、若t己定义为double类型,表达式t=1,t++,t+5的值是()
例2、若题中各变量己正确定义并赋值,下面符合C语句的表达式是()
A、a/(b+c)*d
B、a++
C、int(12.3)%4
D、a=c+b=a+7
例3、己有定义语句:int a=1,b=3,c=3;float d=4以下不能正确表示数学式子
d
c b a
⨯+)(的C 语言表达式是( )
A 、a/(b+c )*d
B 、a/(b+c)*1/d
C 、a/(b+c)/d
D 、a/d/(b+c)
例4、己定义:float x=4.6;表达式:x++=x+1的运算结果是 。
例5、若己有定义语句:int k=3,j=4;运算表达式:k+=j ,j/=4.0,++j 后,表达式的值是(),变量k 的值是(),变量j 的值是()。
A 、4
B 、7
C 、2
例6、以下选项中正确的实型常量是()。
A 、0
B 、3.1415
C 、0.329*102
D 、.871 例7可在C 程序中用作用户标识符的一组标识符是()。
A 、void define WORD; B 、as_b3 _123 If C 、For —abc case D 、2C Do SIG 例8、以下叙述中正确的是( )。
A 、 在C 程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。
B 、
C 程序由主函数组成。
C 、 C 程序由函数组成。
D 、 C 程序由函数和过程组成。
例9、不合法的十六进制数是( )
A 、0
B 、0xabc
C 、0x11;
D 、ox19 例10、请指出以下C 程序的错误所在: #include “stdio.h ” main () float r ,s ;
r=5.0;s=3.14159*r*r ; printf (“%f\n ”,s )
第三章 顺序结构 第一节 输出函数
一、基本概念
1、按语句在程序中出现的顺序逐条执行,由这样的语句构成的程序结构称为顺序结构。
2、把数据从计算机内部送到计算机外部设备上的操作叫做“输出”,反之叫“输入”
3、C 语言本身不提供用于输入和输出的语句。
在C 语言程序中,可以通过调用标准库函数提供的输入输出函数来实现数据的输入和输出。
二、printf 函数
1、printf 函数是C 语言提供的标准输出函数。
它的作用是在终端设备上按指定的格式输出。
2、printf 函数的一般调用形式:
printf (格式控制,输出项表)如在函数后加上“;”就构成了输出语句。
例:printf (“a=%d ,b=%d ”,a ,b ); 1)、printf 是数名; 2)、“a=%d ,b=%d ”称为格式字符串。
3)、a ,b 是输出项表中的输出项。
3、格式控制: 1)、它总是由“%”开始,紧跟其后的是格式描述符。
2)、为各输出项提供格式转换说明。
3)、提供需要原样输出的文字或字符。
4、printf 函数常用的格式说明
1)、格式字符:
细节见下表
2、修饰符(位于%和格式字符之间)
a)、:l:长
h:短
+:使输出的数字总是带有“+”或“-”
-:左对齐
0:加前导0
#:在输出的八进制或十六进制前加前导“0”或“0x”,在其它进制前无效。
b)、输出数据所占宽度(m整数.n小数)
1)、对整数指定宽度(d):
m:当变量的实际宽度小于m时,左边多余位置补空格;变量的实际宽度大于m时,按实际输出。
n:当变量的实际宽度大于n时,按实际输出;当变量的实际宽度小于n时,左边多余位置补0。
2)、对实数指定宽度:(f.e)
m:用于指定实数的总体宽度,包括小数点:
当实数的总体宽度小于m时,在数据左侧补空格;当实数的总体宽度大于m时,m无效。
n:用于指定实数的小数部分宽度:
当实数的小数部分小于n时,在数据右侧补0;当实数的小数部分大于n时,将小数的多余部分四舍五入。
3)、对g或G指定宽度:
m:代表输出的总宽度。
n:代表输出几个有效位。
4)、对s指定宽度
m:代表输出的总宽度。
n:代表输出的字符个数。
5、调用printf的注意事项:
1)、格式说明与输出基从左到右,类型必须一一对应,若类型不匹配,系统不会给出错误提示但结果不正确。
2)、格式说明与输出项个数相同。
若不同,格式说明多,输出不定值;输出项多无用。
3)、除格式说明外,其它合法字符原样照印。
4)、如需输出“%”,则用两个连续的“%”来输出。
5)、尽量不要在输出语句中改变变量的值。
6)、printf返回值是本次输出字符个数。
第二节输入函数
一、scanf函数
1、概念:scanf函数是C语言提供的标准输入函数,它的作用是在终端设备上输入数据。
2、scanf函数的一般调用形式(&求地址运算符):
1)、scanf(格式控制,输出项表),如果在scanf函数后加“;”就构成输入语句。
2)、格式说明:
(1)、格式控制串的作用是指定输入时数据转换格式;即格式转换说明。
(2)、格式转换说明符是由“%”开始,其后是格式描述符。
(3)、输入项表中的各输入项用逗号隔开,各输入项只能是合法的地址表达式。
4、说明:
1)、在turbo环境下输入long整数时,在%和d之间必须加入l;输入double型时,同理。
2)、在格式控制中,格式说明的类型与输入项的类型,应一一对应匹配。
3)、在scanf函数中的格式字符前可用一个整数指定输入数据所占在宽度。
但不可以实型数指定小数宽度。
4)、在格式控制串中,格式说明符的个数应与输入项的个数相同,若格式符个数少于输入项,scanf函数按格式符的数目结束输入,多余输入项没有得到新的数据;若格式符的个数多余输入项,scanf函数按输入项的数目结束输入,多余的格式符不起作用。
5)、当输入的数据少于输入项时,程序等待输入直到满足要求为止;当输入的数据多于输入项时,多余的数据并不消失,而是留做下一个输入操作的输入数据。
6)、scanf函数在调用结束后将返回一个函数值,其值等于得到输入值的输入项的个数。
5、通过scanf函数从键盘输入数据
1)、当调用scanf函数从键盘输入数据时,最后一定要按下回车,该函数才能接受键盘输入的数据。
2)、输入数据的数值
(1)、当从键盘输入数值数据时,输入的数值数据之间用间隔符隔开。
例如:<间隔符>10<间隔符>20<间隔符>30<CR>
(2)、此处间隔符可以是空格符、制表符(Tab)、回车符。
3)、跳过输入数据的方法:
可以在格式字符和%之间加上一个“*”,它的作用是跳过对应的输入数据。
例:
int a1,a2,a3;scanf(“%d%*d*%d%d”,&a1,&a2,&a3);当输入如下数据时:10 20 30 40<CR>将把10赋给a1,跳过20,把30赋给a2,把40赋给a3。
4)、在格式字符串中插入其它字符
(1)、如果想在屏幕上输入字符串来提示,应该使用printf函数,如果在scanf的格式控制字符串中插入了其它字符,则在输入时要求按一一对应的位置原样输入这些字符。
二、复合语句和空语句
1、复合语句
1)、在C语言中,一对花括号“{}”可用做复合语句的开头和结束的标志;它也称为语句块。
2)、在复合语句内,不仅可以有执行语句,还可以有定义部分,并且定义部分应出现在可招待语句的前面。
2、空语句
1)、C程序中的所有语句都必须由一个分号“;”作为结束。
如果只有一个分号,这个分号也是一条语句。
称为“空语句”,程序执行时不产生任何操作。
2)、程序设计中有对需要加一个空语句来表示存在一条语句;但随意加分号也会导致逻辑上的错误,需要慎用!
第三节程序举例
例1、以下程序由终端输入两个整数给变量x和y,然后输出x和y,在交换x和y的值后,再输出x和y,验证两个变量中的数是否正确地进行了交换。
例2、输入一个double类型的数,使该数保留小数点后两位,对第三位进行四舍五入处理,然后输出此数,以便验证处理是否正确。
第四节课后习题和典型例题详解
例1、己有定义:int x;执行以下语句的输出结果是。
x=11/3;y=5;printf(“%%d,%%%d\n”,x,y);
例2、有以下程序段:
int a=0,b=0,c=0;scanf(“%d”,&a);scanf(“%d”,&b);scanf(“%d”,&c);
执行以上语句时从键盘输入:22<Tab>6.5<Tab>9<回车>,则变量a中的值是,b中的值是,c中的值是。
例3、以下合法的C语言赋值语句是()。
A、a=b=58
B、k=int(a+b)
C、a=58,b=58
D、--i
例4、若变量已正确定义,要将a和b中的数进行交换,下面选项中不正确的是()。
A、a=a+b,b=a-b,a=a-b
B、t=a,a=b,b=t
C、a=t;t=b;b=a
D、t=b;b=a;a=t
第四章选择结构
第一节关系表达式和关系运算符
一、基本概念:
1、C语言中的逻辑值
1)、关系表达式和逻辑表达式,其运算结果都会得到一个逻辑值。
2)、C语言中,没有专门的“逻辑值”,而是用非零来表示“真”,用零来表示“假”。
二、关系运算符和关系表达式
1、概念:所谓关系运算实际上就是“比较运算”,将两个数进行比较,判断比较的结果是否符合指定的条件。
2、C语言中的关系运算符:
1)、C语言提供了6种关系运算符,属双目运算符,自左向右的结合性(两字符间不可以有空格):<小于<=小于等于>大于>=大于等于= =等于!=不等于
2)、以上运算符的优先级:
<、<=、>、>= ==、!=
同级同级
高低
3)、关系运算符、算术运算符和赋值运算符之间,优先的次序是:
算术运算符、关系运算符、赋值运算符
高低
4)、关系表达式及关系表达式的值
由关系运算符组成的表达式,称为关系表达式。
关系运算符两边的运算对象可以是C语言中任意合法的表达式。
a)、关系运算的结果是一个整数值:0或者1。
用0代表“假”,非0代表“真”。
b )、当关系运算符两边的值的类型不一致时
短整型→长整型 整型→长整型 有符号→无符号 整型→实型
注:若x 和y 都是实数,应当避免使用x==y ,这样的关系表达式,因为通常存放在内存中的实型数是有误差的,因此不可能精确相等,这将导致关系表达式x==y 的值 总是0。
第二节 逻辑运算符和逻辑表达式
一、C 语言中的逻辑运算符
1、C 语言中提供了3种逻辑运算符 1)、&&逻辑“与” 2)、||逻辑“或” 3)、!逻辑“非”
2、逻辑运算符中逻辑与和逻辑或是双目运算符,逻辑非是单目运算符,位于运算对象的左侧。
3、优先等级 ! && ||
4、逻辑运算符与赋值运算符、算术运算符、关系运算符之间的优先次序:
!、算术运算符、关系运算符、&&、||、赋值运算符
二、逻辑表达式和逻辑表达式的值 1、由逻辑运算符和逻辑运算对象组成的表达式称为逻辑表达式,逻辑运算对象可以是C 语言中任意合法的表达式。
2、逻辑表达式的结果是0(假)或1(真)
1、在逻辑表达式,求解中,并不是所有的逻辑运算符都被执行,只是必须在执行下一个运算符才能求出表达式的解时,才执行运算符。
a&&b&&c a||b||c 高 低 高 低
2、例题:
1)、a=1,b=2,c=3,d=4,(m=a>b)&&(n=c>d),求m和n的值。
当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”》的值为0,所以m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1.m=0 n=1.
2)、要判别某一年year是否为闫年,闫年的条件是否符合下面二者之一:能被4整除,但不能被100整除;能被4整除,又能被400整除。
第三节选择语句的使用
一、if语句
1、C语言提供了两种形式的if语句:
a)、if(表达式)语句
例:if(x>y)printf(“%d”,x);
if(a <b){t=a;a=b;b=t;}
b)、if(表达式)语句1
else语句2
例:if(x>y)printf(“%d”,x);
else printf(“%d”,y);
if(a!=0)printf(“a!=0”);
else printf(“a==0”);
2、说明:
1)、两种形式的if语句中在if后面都有“表达式”,表达式的类型可以是任意合法的C语言表达式,也可以是任意类型的数据;在执行if语句时先对表达式求解,若表达式的值为0,按“假”处理,若表达式的值为非0,按“真”处理,执行指定的语句。
2)、if(x>y)printf(“%d”,x);
else printf(“%d”-x);
注意:以上语句尽管各自后面都有一个分号,但属于一条语句。
3)、if语句后面只能接一条语句。
if语句的表达式后不能加分号,否则将成为空语句;else后面不能接表达式。
4)、如果子句中需要多个语句,则用花括号把一组语句括起来组成复合语句。
注意:}外面不需要加分号。
3、例题:
1)、输入两个数,分别放入x和y中,若两数不相等,则输出其中的大数,若两数相等,则输出字符串“x==y”和x的值。
main()
{
int x,y;
printf(“Enter x&y:\n”,x,y);
scanf(“%d%d”,&x,&y);
if(x>y)printf(“x=%d\n”,x);
if(y>x)printf(“y=%d”,y);。