C语言程序设计 课件 (张惠涛 )第1、2章 C语言程序概述;C语言数据类型、运算符与表达式_第1页
C语言程序设计 课件 (张惠涛 )第1、2章 C语言程序概述;C语言数据类型、运算符与表达式_第2页
C语言程序设计 课件 (张惠涛 )第1、2章 C语言程序概述;C语言数据类型、运算符与表达式_第3页
C语言程序设计 课件 (张惠涛 )第1、2章 C语言程序概述;C语言数据类型、运算符与表达式_第4页
C语言程序设计 课件 (张惠涛 )第1、2章 C语言程序概述;C语言数据类型、运算符与表达式_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章C语言程序概述《C语言程序设计》课程简介

C语言是当今使用最广泛的高级语言,是操作系统、编译系统等大型复杂系统的首选语言。实践证明,用该语言编写的程序,灵活、方便、简洁、高效、数据结构丰富、功能齐全。C语言自问世以来,很快就流行于全世界,并为各种规模的通用计算机所必备。同时,C语言以其灵活方便的特点,成为培养学生计算机语言思维,了解计算机编程思想的最佳语言,它已被当今国内外众多主要高校列为各理工科专业必修课程。《C语言程序设计》概述6C语言程序的开发环境1.1C语言的发展及特点1.2C语言的基本结构1.3C语言的字符集、标识符、关键字1.4C语言的开发环境1.5实践1.1C语言的发展及特点

C语言是当今社会应用很广泛,受到众多用户欢迎的一种计算机算法语言。它既可适合于作为系统软件的描述语言,也可用来开发应用软件。

D.M.Ritchie1972年在B的基础上研制了C语言,并用C语言写成了第一个在PDP-11计算机上实现的UNIX操作系统。目前在微型计算机上使用的C语言有多种版本,这些不同的版本,基本部分是相同的,但在有关规定上又略有差异。1.1.1C语言的发展概况1.1C语言的发展及特点1.1.2C语言的特点简洁紧凑、灵活方便01020304运算符丰富数据结构丰富C是结构式语言C语法限制不太严格、程序设计自由度大050607C语言允许直接访问物理地址,可以直接对硬件进行操作用C语言编程,生成的目标代码质量高,程序执行效率高、可移植性好。1.2C语言的基本结构第一个入门编程代码便是"HelloWorld!"#include<stdio.h>//头文件intmain()//主函数,程序的入口函数{/*代码区*/printf(“Hello,World!”);//printf输出函数return0;//返回值为0}1.2C语言的基本结构头文件说明:#include<stdio.h>(1)#:预处理指令(2)include:文件包含指令,只能包含头文件,xxx.h----头文件xxx.c----源文件(3)<>,"":表示搜索头文件的一种方式<>:库文件,库函数所在的头文件,系统自带的头文件表示程序会在系统目录(软件安装的目录)中查找头文件"":适用于程序员自定义的头文件(4)stdio.h:标准输入输出的头文件,有关标准输入输出函数的声明都在该文件(5)头文件:关于一类功能相近的函数的声明信息如:pow()--求幂,sqrt()--开方关于数学计算的功能------#include<math.h>关于字符串操作的功能------#include<string.h>关于输入输出功能------#include<stdio.h>注意:用到哪个函数,则需要包含该函数的所在头文件1.2C语言的基本结构主函数的理解intmain()//main函数{.......return0;}int指明main()函数的返回值类型,表示函数的返回值类型是int型。函数名后面的括号一般包含传递给函数的信息,没有则表示为空。main函数结论:(1)C语言程序执行过程中,主函数是程序的入口函数,即程序是从主函数开始执行的,而不是从第一个函数开始执行;(2)main函数中语句执行。其他函数体的内容不执行;(3)main函数执行结束,意味着整体的C程序执行结束;(4)一个c程序,有并且只有一个main函数,如果是两个则会出错;(5)main()书写只能是这样,不能写成其他形式;(6)主函数是自动调用,程序运行,主函数自动调用了,子函数必须人为调用才行1.2C语言的基本结构注释的解释:

(1)功能:解释说明,代码的调试(2)特性:被注释掉的代码不再进行编译,即使有语法错误,也不会检测出来(3)形式:单行注释://之后的内容为被注释的内容。(4)多行注释:/**/其中的内容为被注释掉的内容。用法:(1)对文件注释(2)对函数注释(3)对程序语句注释1.3C语言的字符集、标识符与关键字英文字母:大小写各26个,共计52个。01020304阿拉伯数字:0到9共计10个。下划线:_。其它特殊符号:主要指运算符,运算符通常由一至两个特殊符号组成。

特殊符号集如下:+-*/%++--<>=>=<===!=|&!‖&&∧~《》()[]{}\?:.,;1.3.1C语言的字符集1.3C语言的字符集、标识符与关键字1.3.1C语言的标识符1、标识符只能以英文大小写字母、和下划线开头,而不能用其他任何字符或数字开头。例如以下就是错误的例子:int%a;//错误,标识符不能以符号开头int8C[8];//错误,不能以数字开头2、标识符中只能包含英文大小写字母、下划线和阿拉伯数字,但是不能以阿拉伯数字开头。inta8;//正确int_adf589S_5;//正确3、标识符区分大小写,Acd和acd、caDd和cadd、_8Fc9和_8fc9都是不相同的标识符。4、标识符不能是关键字。intfloat;//错误,float是关键字。intFloat;//正确1.3C语言的字符集、标识符与关键字1.3.1C语言的标识符除了这些硬性规则外,标识符的命名最好具有具体的意义,以便于观察、阅读和维护。//定义某长方体的长度、宽度和高度inta;//高度intb;//宽度intc;//高度可以改成如下定义:intc_Long;intc_Width;intc_Height;1.3C语言的字符集、标识符与关键字1.3.1C语言的关键字关键字是一种语言中规定具有特定含义的标识符。关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。根据ANSI标准,C语言可使用以下32个关键字:autobreakcasecharconstcontinuedefault

dodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile1.4C语言程序的开发环境编写好的C语言程序要经过编辑(输入)、编译和连接后才能形成可执行的程序。程序源程序目标程序可执行程序结果*•c•obj•exe编译编辑连接运行C语言程序上机过程1、编辑是在程序编译之前做的准备工作,主要包括:头文件的包含(include),宏定义(define,替换),条件编译(ifdef,ifndef)将源文件通过编辑生成预处理文件(*.c或*.cpp)2、编译:将编辑过后的文件编译生成目标文件(*.obj)3、连接:将目标文件通过连接生成可执行文件(*.exe)4、执行:运行可执行文件。DevC++开发环境

(1)新建源文件打开DevC++,在上方菜单栏中选择“文件-->新建-->源代码”:以创建一个“helloworld!”简单源程序为例:DevC++开发环境

可以增加如下设置,直接生成固定的程序框架。选择工具-->编辑器选项-->代码-->缺省值,说明:#include<bits/stdc++.h>为万能头文件,包含了常用的如【输入输出头文件】#include<stdio.h>、【数学计算头文件】#include<math.h>、【字符串头文件】#include<string.h>等。DevC++开发环境

经过如上设置后,新建文件窗口如图:在空白文件中输入要执行的代码DevC++开发环境

在上方菜单栏中选择“文件-->保存”,或者按下Ctrl+S组合键,都可以保存源文件说明:C++是在C语言的基础上进行的扩展,C++已经包含了C语言的全部内容,所以大部分IDE默认创建的是C++文件。编译器会根据源文件的后缀来判断代码的种类,这里我们选择*.cpp,将源文件命名为helloworld.cpp。DevC++开发环境

(3)生成可执行程序在上方菜单栏中选择“运行-->编译”,就可以完成helloworld.cpp源文件的编译工作。或者直接按工具栏的第一个图标对源文件进行编译。或者直接按下F9键,也能够完成编译工作,这样更加便捷。单击第二个图标,运行该程序,运行结果如下:1.5实践环节解释例1.1使用printf()与%d格式化输出整数。#include<stdio.h>intmain(){intnumber;printf("输入一个整数:");scanf("%d",&number);//通过键盘给程序中的变量赋值//printf("你输入的整数是:%d\n",number);return0;}1.5实践环节解释例1.2使用printf()与%c格式化输出一个字符。#include<stdio.h>intmain(){charc;//声明一个字符串变量C//printf("输入一个字符(仅限1个字母):");scanf("%c",&c);//通过键盘给程序中的变量赋值//printf("输入的字符为%c\n",c);return0;}1.5实践环节解释例1.3使用printf()与%f输出浮点数。#include<stdio.h>intmain(){floatf;//声明浮点数变量printf("输入一个浮点数:");scanf("%f",&f);//通过键盘给程序中的变量赋值//printf("输入的浮点数为%f\n",f);return0;}1.5实践环节解释例1.4使用scanf()来接收输入,printf()与%d格式化输出整数,实现两数相加。#include<stdio.h>intmain(){intfirstNumber,secondNumber,sumOfTwoNumbers;printf("输入两个数(以空格分割):");scanf("%d%d",&firstNumber,&secondNumber);//通过scanf()函数接收用户输入的两个整数sumOfTwoNumbers=firstNumber+secondNumber;printf("%d+%d=%d\n",firstNumber,secondNumber,sumOfTwoNumbers);return0;}1.5实践环节解释例1.5输入两个浮点数,计算乘积。#include<stdio.h>intmain(){doublefirstNumber,secondNumber,product;printf("输入两个浮点数:");scanf("%lf%lf",&firstNumber,&secondNumber);product=firstNumber*secondNumber;printf("%lf*%lf=%.2lf\n",firstNumber,secondNumber,product);//输出结果,%.2lf保留两个小数点return0;}1.5实践环节解释例1.6两数相除,如果有余数,输出余数。#include<stdio.h>intmain(){intdividend,divisor,quotient,remainder;//4个变量是被除数、除数、商和余数//printf("输入被除数:");scanf("%d",÷nd);printf("输入除数:");scanf("%d",&divisor);quotient=dividend/divisor;//运算符/用来计算商//remainder=dividend%divisor;//运算符%用来计算余数//printf("商=%d\n",quotient);printf("余数=%d\n",remainder);return0;}1.5实践环节解释例1.7输入两个数,比较大小#include<stdio.h>intmain(){doublea,b;printf("输入第一个数:");scanf("%le",&a);printf("输入第二个数:");scanf("%le",&b);if(a>b)printf("%le大于%le\n",a,b);elseprintf("%le小于等于%le\n",a,b);return0;}1.5实践环节解释例1.8比较三个数大小#include<stdio.h>intmain(){inta,b,c;printf("输入第一个整数:");scanf("%d",&a);printf("输入第二个整数:");scanf("%d",&b);printf("输入第三个整数:");scanf("%d",&c);if(a>b&&a>c)printf("%d最大\n",a);elseif(b>a&&b>c)printf("%d最大\n",b);elseif(c>a&&c>b)printf("%d最大\n",c);elseprintf("有两个或三个数值相等\n");return0;}1.5实践环节解释例1.9判断奇数还是偶数。#include<stdio.h>intmain(){intnumber;printf("请输入一个整数:");scanf("%d",&number);if(number%2==0)printf("%d是偶数\n",number);elseprintf("%d是奇数\n",number);return0;}1.5实践环节解释例1.10判断正数、负数。#include<stdio.h>intmain(){doublenumber;printf("输入一个数字:");scanf("%lf",&number);if(number<=0.0){if(number==0.0)printf("你输入的是0\n");elseprintf("你输入的是负数\n");}elseprintf("你输入的是正数\n");return0;}本章小结

本章介绍了C语言的发展和特点,基本算法结构,字符集及关键字,着重介绍了本书采用的程序开发环境DEVC++,举例了一些简单例题,熟悉开发环境的同时也能掌握C语言算法的编写习惯。举例了司马迁史记的故事,促进培养坚定理想,矢志不渝为之奋斗的新一代大学生。第2章

C语言数据类型、运算符与表达式C语言数据类型、运算符与表达式62.1C语言的数据类型2.2常量和变量2.3运算符和表达式2.4数据类型转换2.1.1数据类型概述C语言为不同类型的数据使用了不同的格式存储,占用内存单元的字节数也不同。字符型(char)整型(short,int,long,unsigned)单精度型(float)实型双精度型(double)枚举类型(enum)

数组类型([])构造类型结构体类型(struct)共用体类型(union)指针类型(*)空类型(void)基本类型数据类型2.1.2整数类型基本型以int表示01030204长整型以longint表示短整型以shortint表示无符号型存储单元中全部二进位用来存放数据本身,不包括符号。无符号型中又分为无符号整型unsignedint、无符号短整型unsignedshort和无符号长整型unsignedlong。2.1.2整数类型类型名称关键字所占位数取值范围短整型short[int]16-32768~

32767无符号短整型unsignedshort[int]160~

65535整型int32-2147483648~2147483647无符号整型unsigned[int]320~

4294967295长整型long[int]32-2147483648~2147483647无符号长整型unsignedlong[int]320~

4294967295C语言所支持的整型数据2.1.2整数类型

(1)十进制整数的表示与数学上的表示相同,例如:

256,-321,0(2)八进制整数的表示以数字0开头,如:

0234表示八进制整数(234)8,所对应的十进制数为2×82+3×81+4×80=156。(3)十六进制整数的表示以0x开头,如:

0x234

表示十六进制整数(234)16(注意:十六进制数前导字符Ox,x前面是数字0)。在一个整型数据后面加一个字母L或l(小写),则认为是longint型量。如342L、0L、78L等,这往往用于函数调用中。如果函数的形参为longint型,则要求实参也为longint型,此时需要用342L作实参。2.1.3实数类型实数类型的数据即实型数据,在C语言中实型数据又称之为浮点型数据。实型数据的值域在计算机中的表示只是数学中实数的一个子集。C语言所支持的实型数据类型名称关键字字节数取值范围精度(位)单精度型float4-3.4×10-38~+3.4×10387双精度型double8-1.7×10-308~+3.4×1030815

(1)十进制数形式。由正负号、数字和小数点组成。如5.734、-0.273、.8、-224.等。(2)指数形式。如546E+3或546E3都代表546×103。字母E(或e)之前必须有数字,E(或e)后面的指数必须为整数。如E8、4.6E+2.7、6e、e、9E7.5都是不合法的指数形式。5.74E-7、-3E+6是合法的指数形式实型常量。2.1.4字符类型字符类型的数据即指字符型数据,它可分为字符和字符串两种表达方式。

C语言的字符表示是用单引号括起来的一个字符。如‘A’、‘y’、‘*’、‘!’、‘+’等都是字符量。注意:‘e’和‘E’是不同的字符量。反斜杠引导的字符称转义字符,其意思是将反斜杠(\)后面的字符转变成另外的意义。如\n中的n不代表字母n而作为“换行”符。这种转义字符我们称之为特殊字符。例如:‘\101’代表字符‘A’(八进制的ASCII码);‘\X41’也代表字符‘A’(十六进制的ASCII码);‘\012’代表‘换行’符。2.1.4字符类型字符变量字符变量是用类型符char定义字符变量。如:charc=’?’;定义c为字符型变量并使初值为字符’?’。’?’的ASCII代码是63,系统把整数63赋给变量c。注意:’a’和”a”是不同的,一个是字符量’a’,一个是字符串量”a”。字符串不能用于赋值,而字符可以用于赋值。因此,c=”a”不正确,应用c=’a’才正确。c是字符变量,实质上是一个字节的整型变量,由于它常用来存放字符,所以称为字符变量。可以把0~127之间的整数赋给一个字符变量。2.1.4字符类型转义字符\n 换行\t 横向跳格(跳到下一个输出区)\v 竖向退格\b 退格\r 回车\f 走纸换页\\ 反斜杠字符\’ 单引号字符2.2常量与常量

常量是指在程序运行中,其数值不能被改变的量。

直接常量即指C语言的数值常量和字符类型常量。符号常量则是指C语言用标识符定义的常量。数值常量可分为整型常量和实型常量。字符型常量可分为字符常量和字符串常量。2.2.1常量与符号常量

1.整型常量256,-75,0(十进制整型常量)0237,045,0621(八进制整型常量,用数字0作前导)0X28AF,0XED4(十六进制整型常量,用数字0与X作前导)435L,350L(长整型常量)合法的整型常量表示形式096(9非八进制数码)48EA(十六进制数缺前导字符0X)0XK(K非十六进制计数字符)不合法的整型常量表示形式

2.字型常量实型常量只能用十进制形式表示,不能用八进制和十六进制形式表示。合法的实型常量28.76,564.03,2.34E+8,15.78E-2不合法的实型常量6.4E+4.8,E9,E-72.2.1常量与符号常量

3.字符常量

‘x’,‘+‘,‘\n’,‘\101’都是合法的字符常量。

“changsha”,“centralsouthuniversity”,“+++\\?ab”都是合法的字符串常量。而‘ab’既不是字符常量,也不是字符串常量。

4.字符串常量2.2.1常量与符号常量在C语言中可以用标识符定义一个常量,其一般定义格式如下:

#define标识符常量数据

5.符号常量例如:#defineMAX 1000#defineMIX10#definePI 3.14159#defineEND ‘$’2.2.1常量与符号常量2.2.2变量与变量定义在C语言程序中,所有的变量必须加以说明,没有任何隐含的变量。变量说明主要是指出变量的名称,确定变量的数据类型。在C语言程序中,变量必须“先定义、后使用”。变量是以某标识符为名字,其值是可以改变的量。它是以字母或下划线开头的一串字母、数字或下划线构成的序列,最长为1~32个字符。变量代表计算机内存中的某一存储空间,这个存储空间可以存放不同的数据。2.2.2变量与变量定义

变量可以在程序的三种地方定义:函数内部、所有函数的外部和函数的参数定义中。由此定义的变量对应地称为局部变量、全程变量和形式参数。例如:

inti,j,k;

/*定义三个整型变量i,j,k*/floatx1,y1;

/*定义两个单精度型变量x1,y1*/char profit,loss; /*定义了两个字符型变量profit,loss*/变量定义(或叫说明、声明)语句的一般格式为:

类型标识符变量名1,变量名2,……;

1.变量定义语句2.2.2变量与变量定义变量名在定义时可以赋初值。例如:

int a=5,b=8,c;

float x1=6.27,x2,x3=5.94;

char ch=‘a’,kk=‘A’;变量名6ab、4x-y、xy·2a、A7+B2都是不合法的,因为它们不符合标识符的组成原则。

注意:大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。习惯上变量名定义时多用小写字母表示,以增加可读性。2.2.2变量与变量定义若程序中错将teacher打成tcacher,出现:

tcacher=80;编译将查出tcacher未定义。凡未被定义的标识符,不得作为变量名使用。如:

intteacher;每一变量被定义成某一类型,编译时将据此为其分配相应长度的存储单元。2.2.2变量与变量定义定义变量时,变量不能连续赋初值。

inta=b=c=24.5;

/*非法赋值*/变量使用“=”赋初值,但必须保证“=”右边的常量(或表达式的值)与“=”左边的变量类型一致。例如:

intx=3.2E5,a=15.6;变量赋值类型不一致将引起错误。

2.变量赋初值程序上机运行结果为:2022年1月有31天

IloveCHINAIloveChina

例题intmain(){ intyear=2022,month=1,day=31; printf("%d年的%d月共有%d天\n",year,month,day); charc1,c2,c3,c4,c5; c1='C',c2='H',c3='I',c4='N',c5='A'; printf("Ilove%c%c%c%c%c\n",c1,c2,c3,c4,c5); c2='H'+32,c3='I'+32,c4='N'+32,c5='A'+32; printf("Ilove%c%c%c%c%c\n",c1,c2,c3,c4,c5); return0;}2.2.2变量与变量定义程序上机运行结果为:应付金额=64606.402344例题intmain(){ intnum_dress;//定义整型变量衣服的件数 floatprice,money;//定义浮点型变量单价和应付钱数 num_dress=298;//给衣服的件数赋值 price=216.8;//给价格赋值 money=num_dress*price;//计算应付金额 printf("\n应付金额=%f\n",money);//输出结果 return0;}2.2.2变量与变量定义2.3运算符与表达式1、算术运算符。用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(--)共7种。2、关系运算符。包括大于(>)、小于(<)、等于(==)、大于或等于(>=)、小于或等于(<=)和不等于(!=)6种。3、逻辑运算符。包括与(&&))、或(||)、非(!)三种。4、位操作运算符。参与二进制位运算。包括位与(&)、位或(|)、位非(~)、位异或(^)左移(<<)、右移(>>)6种。5、赋值运算符。分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共11种。6、条件运算符。这是一个三目运算符,用于条件求值(?:)7、逗号运算符:(,)。8、指针运算符。(*)、(&)。2.3.1运算符的种类2.3.2算术运算符与算术表达式

+(加)、-(减)、*(乘)、/(除)、%(求余,模运算)。

1.运算符

(1)要求%运算左右两数必须为整型数据,如7%4的值为3。(2)两个整数相除(/),结果为整数,舍去小数部分。如5/3=1,-5/3=-1,采取“向零取整”的方法,即取整后向零靠拢(即向实数轴的原点靠拢)。(3)参加运算的两个数中有一个数为实数,则结果为double型,因为所有的实数都按double型进行运算。(4)字符型数据可以和数值型数据混合运算。因为字符型数据在计算机内部是用一个字节的整型数表示的。2.3.2算术运算符与算术表达式

(1)算术表达式定义。用算术运算符和括号将运算对象(也称操作数)连接起来,符合C语言规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。

2.运算符

(2)运算符的优先级与结合性。和数学上一样,C语言的算术表达式运算时,运算符是有优先级高低之分的,遵循的原则是“先乘除,后加减”。“*、/、%“为同一级别,“+、-“为同一级别。“*、/、%“优先级高于“+、-“。

(3)类型转换。如果一个运算符两侧的数据类型不同,先自动进行类型转换,使两者具有同一种类型,然后再进行运算。2.3.2算术运算符与算术表达式

(4)取负值运算符。C的取负值运算符为:-(负号)。它是一元运算符,如:

-x,-b(5)自增与自减运算符。C的自增运算符为++,自减运算符为--,其操作对象只能是变量。作用是使变量的值增1或减1,如:

++i,--i(在使用i之前,i值先加(减)1)

i++,i--(在使用i之后,i值再加(减)1)

(6)自增与自减运算符优先级高于算术运算符优先级,而与负值(-)运算符同级。如:

i=2;

j=-i++;//“++”“-”是同级优先。2.3.2算术运算符与算术表达式

(7)运算符优先级关系和结合方向。高级

++、--、-、sizeof、!*、/、%+、-<<、>>(左、右移位)<、<=、>、>===、!=&(按位与)^(按位异或)|(按位或)&&(逻辑与)||(逻辑或)?:(条件运算)=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=低级,(逗号)2.3.2算术运算符与算术表达式

(8)C语言的运算符有时不太好理解,如:表达式i+++j是理解成(i++)+j呢?还是理解成i+(++j)呢?C语言编译处理将自左至右对其解释为:(i++)+j,而不是i+(++j)。

++i,--i(变量在使用之前先自增(减)1)

i++,i--(变量在使用之后再自增(减)1)

在表达式中若包含有自增或自减运算符时,给表达式的运算带来了灵活性,但也易给人造成一些混淆的问题。因此,使用“++”或“--”自增与自减运算符要小心谨慎。例如:设i=3,k=(i++)+(i++)+(i++),则k=?

注意:2.3.2算术运算符与算术表达式例2.4自增和自减的应用#include<bits/stdc++.h>intmain(){ inta,b,c,d,e,f,i,j; a=5; b=++a; printf("a的值为%d,b的值为%d\n",a,b); c=5; d=c++; printf("c的值为%d,d的值为%d\n",c,d); e=5; f=--e; printf("e的值为%d,f的值为%d\n",e,f); f=e--; printf("e的值为%d,f的值为%d\n",e,f); i=2; j=-i++; printf("i的值为%d,j的值为%d\n",i,j); return0;}程序运行结果:说明:++和--运算符具有右结合性,如表达式-i++相当于-(i++),不是(-i)++,而(-i)是表达式不能作为++运算符的操作数。2.3.2算术运算符与算术表达式总结了所有运算符的优先级与结合性,同一行中的各运算符具有相同的优先级,各行间从上往下优先级逐行降低。运算符结合性()[]从左向右!~++--sizeof从右向左*/%从左向右+-从左向右<< >>从左向右<= < > >=从左向右== !=从左向右&从左向右^从左向右|从左向右&&从左向右||从左向右?:从左向右=+=-=/=*=%=&=^=|=<<=>>=从左向右,从左向右2.3.3关系运算符与关系表达式C语言提供了6种关系运算符,它们分别是:小于、小于等于、大于、大于等于、等于、不等于注意:在书写关系运算符>=、<=、==、!=时,中间不允许有空格,否则会产生语法错误。关系运算符两边的运算对象可以是C语言中任意合法的表达式。关系表达式的形式为:表达式1关系运算符表达式2C语言的表达式中产生的结果只能是0(假)或1(真)。例如,表达式1<2的值为1,而表达式2<1的值为0。关系运算符可以用于比较整数和浮点数,也允许比较混合类型的操作数。因此,表达式2<2.3的值为1。2.3.3关系运算符与关系表达式由于关系运算符优先级低于算术运算符,所以关系表达式c>a+b等价于c>(a+b)。由于关系运算符优先级高于赋值运算符,所以关系表达式c=a>b等价于c=(a>b)。若a=3,b=2,c=1,数学表达式a>b>c是成立的,但在程序中关系表达式a>b>c等价于(a>b)>c,其中a>b返回值为1,但1不大于c,因此整个关系表达式返回值为0。例如:a>=b、(a=4)>(b=3)、a>c==d等都是合法的关系表达式。关系运算的值为“逻辑值”,只有两种可能:整数0或者整数1。如,a=3>b=4是不合法的关系表达式,因为先运算的3>b的返回结果除了0就是1,结果为常数,4不能赋值给常数,所以出错。2.3.3关系运算符与关系表达式当字符参加关系运算时,使用字符的ASCII码值进行比较,如a=97,则表达式a==’a’的值为1。两个字符串进行关系运算(比较大小)时,从两个字符串左边开始,逐个字符比较。如果前面的字符相同,就比较右边下一个字符,一旦某个字符不同,则按其ASCII码值的大小决定两个字符串的大小。如果所有字符都相同,则两个字符串相等。如:"abc"<"abd"(第3个字符’c’<’d’)"ab"=="ab"等的返回值都为1。2.3.3关系运算符与关系表达式intmain(){ printf("%d%d\n",1<2,2<1);//返回1和0 printf("%d\n",2<2.3);//返回1 inta=3,b=2,c=1; printf("%d%d\n",c>a+b,c=a>b);//返回0和1 printf("%d\n",c>b>c);//返回0 //printf("%d\n",a=4>b=3);//不合法 printf("%d\n",(a=4)>(b=3));//返回1 a=97; printf("%d\n",a=='a');//返回1 printf("%d\n","abc"<"abd");//返回1 return0;}关系运算符算法练习运行结果2.3.4逗号运算符逗号运算符是将多个表达式用逗号运算符“,”连接起来,逗号表达式的一般形式为:表达式1,表达式2,……,表达式n逗号运算符的结合性为从左到右,即先计算表达式1,然后计算表达式2,依次进行,最后计算表达式n,最后一个表达式的值就是此逗号表达式的值。逗号运算符在C语言所有运算符中优先级别最低。如:i=5,i++,++i,i+8这个逗号运算符表达式的值为15,因为i+8改变的是表达式的值,i的值没有改变,所以i的值自加了两次,值为72.3.4逗号运算符如:x=(y=4,y+5,18)这个逗号运算符表达式的值为18,并且将该结果赋给了x,y的值为4。t为int类型,表达式t=1,t+5,t++的值是1,t的值为2。已定义m和n为double类型,则表达式:m=1,n=m+3/2的值是2.000000。(a=3,b=5,b+=a,c=b*5),逗号表达式的值40main(){intx,y,z;x=1;y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}的结果为2,3,12.3.4逗号运算符逗号运算符算法练习intmain(){ intx,y,z; x=1; y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); inti; printf("%d,%d\n",(i=5,i++,++i,i+8),i); printf("%d,%d,%d\n",(x=(y=4,y+5,18)),x,y); intt; printf("%d,%d\n",(t=1,t+5,t++),t); doublem,n; printf("%lf,%lf,%lf\n",(m=1,n=m+3/2),m,n); inta,b,c; printf("%d",(a=3,b=5,b+=a,c=b*5)); return0;}2.3.5逻辑运算符与逻辑表达式C语言有三种逻辑运算符:逻辑与(&&)、逻辑或(||)和逻辑非(!)。逻辑与和逻辑或运算符为双目运算符,具有左结合性。逻辑非为单目运算符,具有右结合性。逻辑表达式的结果只有两个值,真和假,分别用1和0表示。逻辑表达式的形式为:表达式1&&表达式2表达式1||表达式2!表达式逻辑表达式的运算规则为:逻辑与(&&):当两边的表达式的值均为非0时,逻辑表达式的值才为1,其余情况均为0。逻辑或(||):当两边表达式的值均为0时,逻辑表达式的值为0,其余情况均为1。逻辑非(!):当表达式的值为非0时,逻辑表达式的值为0,反之当表达式的值为0时,逻辑表达式的值为1。2.3.5逻辑运算符与逻辑表达式逻辑表达式的用法举例:1、写出判断变量x中的值是否是大写字母的表达式。正确的表达式:x>='A'&&x<='Z'或x>=65&&x<=95错误的表达式:'A'<=x<='Z'或65<=x<=902、写出判断x中的值是否是字母的表达式。正确的表达式:(x>='A'&&x<='Z')||(x>='a'&&x<='z')或(x>=65&&x<=90)||(x>=97&&x<=122)错误的表达式:x>='A'&&x<='z'或x>=65&&x<=122解析:大写字母是'A'~'Z',ASCII码值为65~90;小写字母是'a'~'z',ASCII码值为97~122。即大小写字母之间并不连续,所以表达式需分成两段。3、写出判断a、b、c中的值能否构成三角形的表达式。正确的表达式:(a+b>c)&&(a+c>b)&&(b+c>a)错误的表达式:(a+b>c)|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论