C语言课件(精华版)课件.ppt_第1页
C语言课件(精华版)课件.ppt_第2页
C语言课件(精华版)课件.ppt_第3页
C语言课件(精华版)课件.ppt_第4页
C语言课件(精华版)课件.ppt_第5页
已阅读5页,还剩625页未读 继续免费阅读

下载本文档

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

文档简介

计算机基础教学系列课程,C语言程序设计,课程性质:大学生公共基础课程(必修课)学时:讲课34课时;实验64(课内32/课外32)学分:2学分总评成绩=平时成绩40%+期末成绩60%平时成绩:成绩1(作业、考勤10%)+成绩2(单元测验15%)+成绩3(实验报告15%)期末成绩:期末理论机考60%,C语言程序设计,第一章C语言的发展、特点与程序结构第二章基本数据类型、运算符和表达式第三章基本语句与顺序结构第四章选择结构第五章循环结构第六章数组第七章函数第八章指针第十章结构体第十二章文件,C语言程序设计,推荐参考书:谭浩强主编程序设计(第二版)北京:清华大学出版社,第一章C语言的发展、特点与程序开发基本知识,1.1C语言的发展与特点1.2程序设计的基本方法1.3算法的概念及其表示1.4C语言的基本结构1.5应用程序的开发步骤和运行过程,下一章,目录,习题,C语言是一门优秀的程序设计语言C语言是在1973年由美国贝尔实验室开发的。1983年,ANSI为C语言制定了新的标准,称为ANSIC,并于1989年最终完成。目前使用较多的版本有ANSIC,BorlandC,TurboC,MicrosoftC/C+,VisualC+等。,C语言的发展,WUCC,C语言是结构化程序设计语言功能强大,具有丰富的数据类型及运算符。简洁紧凑,使用方便灵活。C语言具有自我扩充能力C语言具有汇编语言的功能可移植性好,WUCC,C语言的特点,程序的概念程序是计算机解决问题所需的一系列指令的集合。著名计算机科学家NikiklausWirth提出了“算法数据结构程序”的公式程序就是在数据的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。,1.2程序设计的基本方法,程序数据结构算法程序设计方法语言工具数据结构是数据的类型和数据的组织形式。算法是为解决一个问题而采用的方法和有限的步骤。程序设计方法确定语言和编程环境,WUCC,面向过程的程序设计,所谓面向过程的程序设计,是指利用面向过程的语言工具(如Pascal、Fortran和C语言等)进行程序开发的各项活动。,优点:编程简单、结构性强、可读性好;遵循这种结构的程序只有一个入口和一个出口。缺点:存在数据与程序模块的分离和程序的可重用性差等问题。,WUCC,面向对象的程序设计,ProgramDesigninCLanguage,面向对象的程序设计将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。,1.3算法及其表示,算法的特性有穷性一个算法的操作步骤应当是有限的;确定性算法中的每一个步骤应当有确定的意义,不能有二义性;有效性算法中的每一个步骤应当正确、可行,并且能有效地执行;有零个或多个输入执行算法时需要从外界获取的信息;有一个或多个输出执行算法后应当得到正确的结果。,算法举例,【例1.1】输入三个数,然后输出其中最大的数。(1)输入变量x,y,z的值(2)比较x和y,如果xy,则x送max;否则y送max。(3)比较max与z,如果zmax,则将z送max。(4)输出max,max即为最大数。,算法,对同一个问题,算法是不唯一的,例如:求和1+2+3+100(1)=(1+2)+3)+4)+100)(2)=(1+100)50一个好的算法应该是:正确、易读、效率高。,算法的表示方法,常用的算法描述方法有:自然语言描述、伪代码、流程图、N-S图、PAD图等。1.自然语言就是用人们日常使用的语言来描述或表示算法的方法。,英语和程序设计语言混合使用称为伪代码。Begin算法开始inputx,y,zifxythenmax=xelsemax=yifzmaxthenmax=zprintmaxend算法结束,2.用伪代码表示算法,用一些图框和方向线表示算法的图形表示法。特点:直观形象,易于理解,便于检查和交流。常用流程图符号及含义如下:,3.用流程图表示算法,流程图:,【例1.1】对任意给定的三个整数x,y,z,求出其最大值。,例:对任意给定的三个整数x,y,z,求出其最大值。,4.用N-S流程图表示算法,结构化程序设计,C语言是结构化程序设计语言,有三种基本结构。顺序结构选择结构循环结构实践证明,任何复杂的算法都可以用这三种基本结构来描述。,程序设计的目标在正确的前提下,其重要性排列次序依次为:可读、可维护、可移植和高效。,顺序结构,矩形框用于表示顺序结构。执行时按语句的先后顺序执行。先执行语句A,再执行语句B。,顺序结构的流程图,顺序结构的N-S图,选择结构(分支结构),根据条件的真或假选择执行不同的操作内容。当条件成立执行语句A,否则执行语句B。,选择结构的流程图,选择结构的N-S图,循环结构,(1)当型(while型循环)当条件成立,执行循环体,否则跳出循环体。,L形框用于表示循环结构,(2)直到型循环(do-while型循环),首先执行循环体,若条件不成立继续执行循环体,直到条件成立为止。,【例1.2】在屏幕上显示一行文字“WelcometoC!”。,#includevoidmain()/*定义主函数*/printf(“WelcometoC!n”);程序运行结果:WelcometoC!,函数(Function)C程序包含一个或多个函数,其中必须有一个main()圆括号指示一个函数包含函数体,表示main函数结束,printf(“Welcome”);printf(“toC!n”);,printf(“WelcomentonC!n”);,程序运行结果:WelcometoC!,程序运行结果:WelcometoC!,注释/*文本*/或/不被执行以提高程序的可读性,语句(Statement)必须以;结尾格式输出函数printf()。调用标准函数,显示引号中的内容。,#includevoidmain()inta,b,sum;/声明部分,定义变量类型a=123;b=456;/执行部分,赋值语句sum=a+b;/执行部分,赋值语句printf(“sum=%dn”,sum);/执行部分,输出语句程序运行结果:sum=579,赋初值,计算,输出,定义变量,【例1.3】求两个整数的和,函数体包括变量说明部分语句执行部分,/文件包含预处理命令/将标准输入输出头文件包含到源程序中,#includevoidmain()inta,b,c;/定义变量类型printf(“inputtwonumbers:n”);/提示scanf(“%d,%d”,intmax(x,y)intx,y;intz;if(xy)z=x;elsez=y;return(z);,【例1.4】求两个数中的较大值,程序由两个函数组成:main函数和max函数。,运行程序屏幕显示提示信息;键盘输入a、b的值;屏幕显示c的值。,inputtwonumbers:123,456max=456,一个C程序由一个或多个函数组成,其中必须有一个主函数main()。程序执行时总是从主函数开始,main()可以置于程序的任何位置。程序中需有预处理命令(如#include),预处理命令通常放在程序的最前面。分号是C语句结束的标志,每个语句和数据定义后必须有一个分号。预处理命令、函数头和花括号“”之后不能加分号。,1.4.2C语言程序基本结构,C程序书写灵活,一行可以写几个语句,一个语句可以写在多个程序行上。,#includevoidmain()inta,b,sum;a=123;b=456;sum=a+b;printf(“sum=%dn”,sum);,C语言本身没有输入输出语句,输入输出的操作是由库函数scanf()和printf()等函数完成的。,1.4.2C语言程序基本结构,C程序严格区分大小写。一般变量、语句等用小写字母书写;符号常量等用大写字母书写。标识符、保留字之间必须至少加一个空格以示分隔。,函数,C语言的函数有两种:标准库函数和用户定义的函数。,用户自定义函数,可有可无,数目不限。如例1.4中的intmax(intx,inty)C语言提供的库函数,如输出函数printf()和输入函数scanf()。,函数定义:函数头+函数体函数头:说明函数的类型、名字、参数及参数的类型。intmax(intx,inty),#includevoidmain()inta,b,sum;a=123;b=456;sum=a+b;printf(“sum=%dn”,sum);,函数体,函数头,函数体:由“”括起,包括变量声明和执行部分。,函数定义,1.4.3C语言的字符集、关键字和标识符,字符集:C语言允许使用字符的集合字符集的组成:26个小写字母abcdefghi.z26个大写字母ABCDEFG.Z10个数字09其他符号+-*/=,._:;?”|max(x,y,z),1.5应用程序的开发过程,1.5应用程序的开发过程,编辑器,file.cfile.cpp,编译器,file.obj,连接器,file.exe,Libraries,CPU,装载程序,建立、修改、保存源文件,生成目标文件,生成可执行文件,运行可执行文件,1.5应用程序的开发过程,在VisualC+6.0环境下,开发和运行程序的步骤如下:1.启动VC“开始”“程序”“MicrosoftVisualC+6.0”即可启动VC6.0。2.编辑、建立源文件。3.编译、连接和运行源程序。,习题,1.一个C语言程序是由组成a)主程序b)子程序c)函数d)过程2.一个完整的C语言的程序a)至少包含一个主函数b)至少包含一个主函数与一个子函数c)必须由一个主函数与一个以上的子函数组成d)必须由一个主函数与一个子函数组成,习题,3.C语言程序的执行总是从。a)main函数的入口开始b)编译预处理命令开始c)源程序的第一个函数开始d)源程序的第一行语句开始,习题,4.在C语言的源程序中,主函数的位置。a)必须在源程序的最后b)任意c)必须在源程序的开头5.一个函数一般由两部分组成,它们分别是和。6.函数体使用_符号开始,使用_符号结束。,函数头,函数体,习题,7.C程序的每条语句的结束标志是_符号。8.在C程序中,注释以_符号开始,使用_符号结束。9.算法是_。10.表示算法的常用方法有_、_、_等。11.结构化程序的三种基本结构是_、_、_。,;,/*,*/,解决某一问题所采取的方法和步骤,自然语言,流程图,伪代码,顺序结构,选择结构,循环结构,12.判断下述说法是否正确。如不正确,说明理由。,a)printf函数总是从新行的起始位置开始打印。b)计算机会把/*和*/之间的注释文本打印到屏幕上。c)所有的变量在使用前都必须予以声明。d)C语言认为变量number和NuMbEr是相同的。e)声明语句可放在函数体中的任何位置。f)打印三行输出的C语言程序必须用三条printf语句。g)printf函数的格式控制串中使用转义字符n会把光标定位到屏幕上下一行的开始位置。,2.1数据与数据类型2.2常量、变量和标准函数2.3基本运算符及其表达式,第二章数据类型、运算符和表达式,下一章,上一章,目录,习题,整型:包括有、无符号的基本整型、短整型、长整型实型:包括单精度实型、双精度实型float,double字符型:用于表示和存储ASCII字符。char,2.1数据类型,是C语言数据类型的基本型,其值不可再分解为其他类型。,一种特殊的数据类型,其值为某个量的内存地址。,一种无返回值函数的数据类型。void,用新的类型名替代已有类型名使用。用typedef定义,一种由单种或多种数据类型构造而成的数据类型。数组结构共用体枚举类型,C语言的基本数据类型,2.2常量、变量和标准函数,2.2.1常量2.2.2变量2.2.3标准函数,下一节,第二章,目录,习题,2.2.1常量,常量在程序执行期间其值保持不变的量C语言有以下几种类型的常量:整型常量实型(浮点型)常量字符常量字符串常量,有三种形式:十进制整数:八进制整数:由数字0开头十六进制整数:由前缀0 x或0X开头,1.整型常量,如:014-0110177777,如:0 x110XAFBDE0X00FFH,如:11,-13,0,65535,1,00021/310454.10*30199,整数又可分为:,长整型整数:用后缀L/l表示。012L,65536L,0XCL无符号整数:用后缀U/u表示。017u,0 xfdbU无符号长整数:用后缀UL/ul表示。15uL,实型常量又称实数,指带有小数部分的数。C语言中的实数是以十进制表示的,有两种表示形式:十进制小数形式:由数字、数符和小数点组成。例:0.123,.123,123.,0.0,-2.5,,指数形式:又称科学记数法。用E(或e)表示以10为底的指数。如:10000000011081E+80.00001251.2510-51.25E-05,0.9110-30.91E-03,尾数部分,指数部分,字母E/e前必须有数字,而E后面的阶码必须为整数。,2.实型常量浮点数,例:下列不合法的指数形式:,单独的小数点和单独的指数部分如:.E-5E10阶码只能是整数,不能带小数点。如:1234E1.52.E6.5e(2*3)E-35*E41012不能写成E12,必须写成:,3.字符常量,字符常量:是用单引号括起来的一个字符如:a,A,9,+,?,合法“a”,99999,非法在内存中,字符常量以ASCII码存储,一个字符占一个字节。由于字符常量是按整数存储的,可以像整数一样在程序中参与相关的运算。如:a32;/执行结果97-32=6599;/执行结果57-9=48,以“”开头的字符序列,有特定的含义。如:表示输出一个反斜杠符”表示输出一个双引号ddd(ddd表示八进制的ASCII码)xhh(hh表示十六进制的ASCII码)例:n(回车换行)12xaA101x41注:0或000是代表ASCII码为0的字符,即空字符(NULL),表示整数0。,转义字符,【例2.1】转义字符的应用,#includevoidmain()printf(“atbncbd100x40n”);,abd,输出到显示屏,字符串常量:用一对双引号括起的字符序列。例:“CHINA”,“a”,“$12.5”,“”,“wx53np103q”字符串长度:字符串中所有字符的个数系统自动在每个字符串的末尾加上一个空字符NULL,即0作为字符串的结束。0是一个ASCII码为0的字符。例:“CHINA”在内存中所占的字节为:,4.字符串常量,字符常量由单引号括起来,字符串常量由双引号括起来。,字符串常量和字符常量的主要区别:,字符常量只能是单个字符,字符串常量可以含有多个字符。字符常量占一个字节,字符串常量占的字节数等于字符个数加1。比较:A与”A”的区别,若输出的字符串中含双引号(”),则要使用转义字符(”)。例:printf(“hesaid“Iamastudent.”n”);输出:hesaid“Iamastudent.”,5.符号常量,符号常量:用标识符表示的常量格式:#define标识符常量功能:用该标识符代表后面的常量值例:#definePI3.1415926#defineSTAR*,预处理命令#define也称为宏定义,一个#define命令只能定义一个符号常量,用一行书写,不用分号结尾。,#include#definePI3.1415926/用预处理命令定义符号常量voidmain()floatr,area,l;/定义变量类型为实型scanf(“%f”,【例2.2】求半径为r的圆面积和圆周长,说明:符号常量名习惯用大写字母表示该命令通常放在文件头在程序中,符号常量不允许重新赋值。例:#definePI3.1415926PI=5.6;或scanf(“%f”,5.符号常量,2.2.2变量,变量概述整型变量实型变量字符型变量变量的初始化,变量概述,变量:在程序执行期间其值可以改变的量变量在使用之前必须被声明每一个变量有名字,类型,长度和值。对变量赋值过程是“覆盖”过程,用新值去替换旧值。从内存中读出变量的值,该变量保持不变。,90,x=90;,printf(“%d”,x);,定义变量的形式:类型说明符变量名表;例:inta,b;/*定义两个整型变量a和b*/charc;/*定义字符型变量c*/floatf1,f2;/定义单精度实型变量f1和f2,变量概述,变量类型(type),变量名(name)是一个标识符,1.整型变量,用来存放整型数据的变量,整型变量的分类表,与操作系统、编译系统、机器字长有关。,有符号的整数最高位是符号位,正整数在内存中以二进制原码形式存放。负整数在内存中以二进制补码的形式存放。有符号正整数10,有符号负整数-10,无符号整数,无符号整数的所有二进制位全部用来存放数值,不能存放负数。无符号整数65535u,例:求50的三次方,#includevoidmain()shortintx;x=50*50*50;printf(“%dn”,x);程序运行结果为:-6072(错),将以上程序改为:,#includevoidmain()intx;x=50*50*50;printf(“%dn”,x);运行结果:125000,因此,在定义整型变量时,要注意数据类型允许的数值范围。,用来存放实型数据的变量分单精度型、双精度型和长双精度型三类,2.实型变量,#includevoidmain()floatf;/f为单精度实型变量doubled;/d为双精度实型变量f=33333.33333;d=33333333333333.333333;printf(“f=%fnd=%fn”,f,d);输出结果:f=33333.332031d=33333333333333.332000,【例2.3】实型变量的使用,f;,3.字符变量,用来存放字符常量的变量例:charc1,c2,c3;c1=A;c2=n;c3=97;每个字符变量分配一个字节用于存放一个字符。(存放的是字符的ASCII码值),字符数据与整型数据可相互赋值,直接运算。可以把字符变量按整型量输出,也允许把整型量按字符量输出。,#includevoidmain()inta=b;/给一个整型变量赋一个字符值charc1=97;/给一个字符变量赋一个整数值c1=c1-32;/将小写字母转换为大写字母printf(“%d%dn”,a,c1);printf(“%c%cn”,a,c1);,输出结果:9865bA,【例2.4】字符型变量的使用,注意:,只能将一个字符常数赋给一个字符变量,不能把一个字符串常量赋予字符变量。例:charc=“abc”;在C语言中没有字符串变量(但可以用一个字符数组来存放一个字符串常量),4.变量的初始化,在说明变量的同时给变量赋初值格式:类型说明符变量=常数;例:inta=5;/定义并初始化charc1=a,c2=B;doublearea,r=23.e-2;intx=10,y=10,z=10;/不能写成intx=y=z=10;,inta;a=5;/赋初值,2.2.3标准函数,C编译系统提供的库函数包括:输入输出函数、数学函数、字符和字符串函数等。,数学函数,x为弧度,doublex,doublesin(x)cos(x),sin(x)cos(x)exp(x)log(x)log10(x)fabs(x)pow(x,y)sqrt(x),area=s(s-a)(s-b)(s-c),s=(a+b+c)/2,#include#include,【例2.5】求三角形面积,/预编译命令,将系统提供的数学函数/作为头文件包含到用户源文件中,voidmain()doublea,b,c,s,area;scanf(“%lf,%lf,%lf”,运行,2.3运算符和表达式,2.3.1算术运算符与算术表达式2.3.2不同数据类型的转换与运算2.3.3关系运算符与关系表达式2.3.4逻辑运算符与逻辑表达式2.3.5条件运算符与条件表达式2.3.6赋值运算符与赋值表达式2.3.7逗号运算符与逗号表达式,2.3基本运算符及其表达式,1.基本算术运算符,算术运算符用于各类数值运算。包括基本算术运算符、自增运算符、自减运算符。下表为基本算术运算符。,1,在C语言中,规定了运算符的优先级和结合性。,优先级:语言中,运算符的优先级共分为15级。1级最高,15级最低。表达式求值时,先做优先级高的操作。如:d=a+b*c;当运算符的优先级别相同时,运算次序由结合性决定。结合性:左结合性(先左后右)例:d=3*5/4;右结合性(先右后左)例:d=a=3;,运算符,整数相除截去余数,此运算为整除。5/2=2(2.5)1/3+1/3+1/3=0对于浮点数则为通常意义的除法5.0/2.0=2.51./3+1./3+1./3=1,%模运算符,用于计算两个数相除后得到的余数。如:ab求a除以b以后得到的余数。运算对象只能是整型量,其结果也是整型量。如:5%2=13%3=03%5=3A%2=13.0+10.0%5所得结果的符号与运算符左侧操作数的符号相同,-5%2=-15%-2=1,2.自增、自减运算符,例:x=10;y=+x;此时,y=11若:x=10;y=x+;则y=10在这两种情况下,x都被置为11。,K=3;j=5;i=3;m=(+k)*j;n=(i+)*j;,例:,m=k=,20,4,n=i=,15,4,【例2.7】自增、自减运算符的使用。,#includevoidmain()inti=6,a,b;printf(“%dn”,+i);printf(“%dn”,i+);a=-i;printf(“%dn”,a);b=i-;printf(“%dn”,b);printf(“%dn”,-i+);printf(“i=%dn”,i);,i=?,7777-6,7,注意:,自增、自减运算只能用于变量,不能用于常量和表达式。例:i+为合法的运算+6,+(a+b)为非法的运算,自增、自减运算符是两个+或两个-的一个整体,中间不能有空格。如果有多于两个+或两个-连写的情况,则编译首先识别前两个+或-为增量或减量运算符。,表达式x+y等价于(x+)+y自增、自减运算符的运算顺序是右结合,因此对-i+应理解为:-(i+),而(-i)+是非法的。例:i=3;printf(“%d”,-i+);输出:,-3,【例2.8】自增、自减运算符的使用,#includevoidmain()inti,j,k;i=1;j=1;k=i+j;printf(“i=%d,j=%d,k=%dn”,i,j,k);,程序运行结果:i=2,j=1,k=2,k=(i+)+j;,由算术运算符和括号将运算对象(如常量、变量、函数等)连接起来的一个有值的式子。例:A*2-sqrt(4.)/-d(d=2)表达式求值的优先次序:()函数+、-*、/、%+、-高低,3.算术表达式,“/”号,如:(a+b)/(c+d),“*”不能省略,如:2(a+b)2*(a+b)括号只能使用圆括号,且成对出现,不能使用和。如:ax+b(y+c)a*(x+b*(y+c),书写问题:,LN(-X),例:将下列数学式子写成C算术表达式,log(sqrt(a+x*x)-x),ae-st,abs(a)*exp(-s*t),sqrt(fabs(sin(x*3.14/180),xy,pow(x,y),A3*xn/(2*x-1)B3*x*n/(2*x-1)C3*pow(x,n)*(1/(2*x-1)D3*pow(n,x)/(2*x-1),例:与数学式子3乘以x的n次方除以(2x-1)对应的C语言表达式是_。,2.3.2不同数据类型间的转换与运算,在C程序中,当不同类型的量进行运算时,要转换成同一种类型然后再进行运算。例:10+a+1.5-8765.1234*b转换方式:自动转换:数据类型自动由低级向高级转换。强制转换:将表达式的运算结果强制转换成指定的数据类型。,自动类型转换,这种类型转换由编译系统自动完成转换规则:,说明:1.横向的箭头表示必定的转换。2.纵向的箭头表示当运算对象类型不同时转换的方向。,例:floatf=3.5;intn=6;longk=21;doubless=f*n+k/2;,强制类型转换,格式:(数据类型说明符)(表达式)注意:强制转换属单目运算,运算优先级为2。强制转换得到的是中间结果类型,原变量类型不变。数据类型说明符和表达式都必须加括号(单个变量除外)例:intx,y;floatz;(float)(x+y);(int)z+x;(float)(5%3);(将5%3的值转换为float型),#includevoidmain()intx=8;floatf=6.85;printf(“(float)x=%f,x=%dn”,(float)x,x);printf(“(int)f=%d,f=%fn”,(int)f,f);,【例2.12】强制类型转换的应用,2,%4,f);,2.3.3关系运算(比较运算),即比较两个量的大小,比较的结果为“真”或“假”。,例:a3如果a=8,则结果为“真”;如果a=1,则结果为“假”。,1.关系运算符,2.关系表达式,用关系运算符将两个表达式连接起来的式子。格式:其中:表达式1和表达式2可以是任意表达式。,例:m+n(4b+3(a=4)=(b=6)5278,0,0,0,值为:1,例2.13读程,#includevoidmain()inta,b,c;a=b=c=10;a=b=c;printf(“%d,%d,%dn”,a,b,c);a=(b=c+*2);printf(“%d,%d,%dn”,a,b,c);a=bc=100;printf(“%d,%d,%dn”,a,b,c);,输出结果:1,10,101,20,110,20,11,关系运算的不足,关系表达式只能表达简单的关系,如:sum=1500y!=z即只能对一个条件进行测试。而以下关系:0x5则不能用关系表达式表示。x0+x/*x=?y=?*/,0,-1,短路表达式,逻辑或:(表达式1)|(表达式2)|只有表达式1为假时才判断表达式2的值例:voidmain()intnum=3;54|(num=0);printf(“num=%dn”,num);,输出:num=3,条件运算符:?:三目运算符、右结合、13级。条件表达式:?:执行过程:,2.3.5条件运算符与条件表达式,例:max=(ab)?ab;,max=ab?ab;,说明:,在程序中常把条件表达式的值赋给某个变量,如:将ch中字母转换为小写字母charch=getchar();ch=(ch=A,将x的绝对值赋给yy=x=0?x:-x;,在条件表达式中,各表达式的类型可以不同,此时,条件表达式值的类型为表达式2和表达式3中较高的类型。如:xy?11.5条件表达式的值为浮点型,说明:,说明:,条件运算符可以嵌套,这种嵌套是右结合的。例:inta=15,b=20,c=25,d=30,e;e=ab?c:cd?b:d;,(,),e=30,例2.15读程,写出运行结果。,#includevoidmain()inta=1,b=1,c=1;a=a+b;b=b+c;c=c+a;printf(“(1)%dn”,ab?a:b);printf(“(2)%dn”,ac?a-:c+);(a=b=c)?printf(“an”):printf(“bn”);printf(“(4)%d,%d,%dn”,a,b,c);,运行结果:(1)2(2)3b(4)2,2,4,例2.16:任意输入三个数,输出最大值。,#includevoidmain()inta,b,c,max;scanf(“%d%d%d”,程序运行如下:25-748最大数为:48,(,(,),),赋值运算符分两种:简单赋值运算符:=复合赋值运算符:如+=、-=、*=、/=、%=等优先级14,右结合性。赋值表达式:由赋值运算符连接起来式子作用:将表达式的值赋给变量,2.3.6赋值运算符和赋值表达式,简单赋值运算符为“=”;由“=”连接的式子为(简单)赋值表达式。格式:=作用:把右边表达式的值,赋给左边的变量。例:k=i+-j(i=2,j=3,k的值为)x=(a=5)+(b=8)(x的值为)d=e=2.1执行顺序是:先计算,再赋值。,4,13,1.简单赋值运算符和赋值表达式,例:指出下列赋值表达式的错误,-s=x+y5=na=a*3=2w=3.64E2.1/5.87cos()=a/sqrt(a*a+b*b)y=int(i)k=12.3%4a=a+7;,赋值运算的类型转换,规则为:,实型数据赋给整型变量时,只取整数部分。如:inti=1.5*2/2;,(x的值为0.000000),整型数据赋给实型变量时,以浮点形式取值。,(i值为1),如:floatx=1/4+1/4+1/4;,字符型数据赋给整型变量时,整型变量的高位补的数与char的最高位相同,低八位为字符的ASCII码值。,整型数据赋给字符型时,只把低8位赋给字符变量。,如:K=A(k值为65),k:0000000001000001,例2-13:,voidmain()shortintx=300;chary;y=x;printf(“y=%dy=%cn”,y,y);输出结果:y=44y=,x:0000000100101100,y,2.复合赋值符及表达式,复合赋值运算符是在简单赋值运算符前加双目运算符构成。共10种:+=,-=*=、/=、%=等。例:c=c+3c+=3x*=y+7x=x*(y+7)设x,y,z的初始值分别为:10,20,30 x+=y+=z*zx=x+(y=y+z*z)结果为:930设t的值为5t+=t-=t*tt=t+(t=t-t*t)结果为:-40,例2-14,voidmain()inta,b,c;a=b=c=5;printf(”a=%d,b=%d,c=%dn”,a,b,c);a=(b=4)+(c=6);printf(”a=%d,b=%d,c=%dn”,a,b,c);a+=b+c;printf(”a=%d,b=%d,c=%dn”,a,b,c);a+=a-=a*=a;printf(”a=%dn”,a);,运行结果:a=5,b=5,c=5a=10,b=4,c=6a=20,b=4,c=6a=0,逗号运算符运算符:“,”优先级15级最低,左结合用逗号运算符将各表达式连接起来的式子为逗号表达式。格式:如:a=3*5,a*10,a+8求解过程:先求表达式1的值,再求表达式2的值,最后求表达式n的值,表达式n的值作为整个逗号表达式的值。,2.3.7逗号运算符和逗号表达式,例:逗号表达式的应用,#includevoidmain()inta=2,b=4,c,y;y=(c=a*b,b+c);printf(“y=%dn”,y);输出结果:,y=12,例:,1)(a=3*5,a*4),a+52)a=5,a*=a,a+53)inta,b;a=2,b=5,a+,b+,a+b;4)intx=10,y=3,z;printf(“%dn”,z=(x%y,x/y);,20,30,9,3,说明:,(1)用一个逗号表达式语句,可代替多个赋值语句,如a=0;b=1;c=2;可写成:a=0,b=1,c=2;,(2)在变量说明和函数参数表中逗号只是起分隔符作用printf(“%d,%d,%d”,a,b,c);,printf(“%d,%d,%d”,(a,b,c),b,c);,例:交换变量a,b的值。a=1.0,b=2.0,voidmain()floata,b,c;a=1.0;b=2.0;printf(“a=%fb=%f”,a,b);c=a;a=b;b=c;printf(“a=%fb=%f”,a,b);,a,b,c,a,a,b,b,y,x,1.0,1.0,2.0,习题,1.下面四个选项中,均是合法整型常量的选项是()。A)160B)-0 xcdfC)-01D)-0 x48a-0 xffff01a986,0122e50110 xe06680 x2.下面四个选项中,均是不合法浮点数的选项是()。A)160.B)123C)-018D)-e30.122e4.2123e4.234e3.e50.01e3,A,B,习题,3.下面四个选项,均是合法转义字符的选项是()。A)B)C)018D)0017f101nxabx1f4.下面四个选项中,均是非法常量的选项是()。A)adsB)C)-0 x18D)0 xabc-0fff010117700 xa12,4560 xf“a”,A,A,习题,5.下列变量名中合法的是。A3a4bBcos(b)C6a7bDch-566.下面错误的c常数是。A0.0E0B-0.1E02CE-1D1E17.下列表达式值为5的是:Asqrt(25.0)Bpow(25,0.5)C10*0.5D25%10,C,C,9.C语言中,char型数据在内存中是以形式存储的A原码B补码CASC码D反码,10.执行以下语句的输出为:intx=15,y=5;printf(“%dn”,x%=(y%=2);A0B1C6D12,习题,习题,11.判断表达式的类型:1)chara;intb;floatc;doubled;a*b+c-d结果的类型为。2)(float)(5%3)结果的类型。3)doublex,y;(int)x+y类型为。,double,float,double,习题,voidmain()inti=10;printf(“%d,%d,%d,%dn”,i,i-,+i,-+i);,程序运行结果:12,12,12,-11,习题,voidmain()intc=5;printf(“%d,%d,%dn”,c+=c+,c+8,+c);c=5;printf(“%dn”,(c+=c+,c+8,+c);,程序运行结果:12,14,612,上机作业:,1.取圆周率为3.1415926,半径r为40,求圆面积。要求:圆周率定义为符号常量半径用scanf()输入分两行输出,先输出圆周率和半径,再输出面积。2.思考题:设学生常数为500,编程输出下列结果(引号也要输出)。“Howmanystudenthere?”“500”,上机实验内容:,1.实验教程第二章实验一:1、3、4题2.输入两个数分别赋予变量a,b。然后,交换变量a,b的值再输出。,上机作业:,实验教程第二章实验二:1、2、3题编程题:任意输入三个数,输出最大值。(用条件表达式),上机作业:,实验教程第三章实验一2、4题。编程:输入一个三位正整数,然后反向输出对应的数。如输入123,则输出321。要求:用/%运算符,上机作业:,实验与习题第4章实验一3、4题。实验与习题P63编程题的第4小题要求:用switch语句编写。,上机作业:,实验与习题第5章实验一(1)编程题:任意输入一串字符,以?结束,分别统计其中字母、数字和其他字符的个数。,改错:,#difinePI=3.1415926;voidMain/*求圆面积intr=40;scanf(“%fn”,r);area=PI*r*r;print(“PI=%dr=%dnarea=%fn,PI,m,(),definePI3.1415926,f,f,*/,floatarea;,floatarea;,”,d”,#include,第三章基本语句与顺序结构程序设计,3.1C语言程序的基本语句3.2赋值语句3.3数据的输入输出,下一章,上一章,目录,习题,3.1C语言程序的基本语句,C语言语句有五类:表达式语句、函数调用语句、控制语句、复合语句、空语句。“;”是C语句结束标志。,表达式语句:x=x+1,z+x;j=j+3(是表达式,不是语句)j=j+3;(是语句)+i;/自增运算表达式加分号n+=10;/复合赋值表达式加分号,函数调用语句:printf(“Goodn”);控制语句:if语句,while语句,return语句等。复合语句:用括起来组成的一个语句,if(ab)c=a;a=b;b=c;,空语句:仅由一个“;”构成的语句,3.2赋值语句,是由赋值表达式加上分号构成的表达式语句。格式:,注意:在赋值符“=”右边的表达式又可以是一个赋值表达式。如:a=b=c=d=5;右结合,变量=表达式;,赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。如:if(a=b)0)c=a;if(a=b;)0)c=a;printf(“%dn”,z=(x%y,x/y);,赋值表达式和赋值语句的区别是:,3.3数据的输入输出,C语言中数据的输入、输出是由函数来实现的。3.3.1格式输入输出函数printf()和scanf()3.3.2字符输入输出函数putchar()和getchar(),1.格式输出函数:printf()函数,格式:printf(“格式控制字符串”,输出表列);功能:按格式控制字符串规定的格式,向标准输出设备(一般为显示器)输出输出表列中各输出项的值。,printf(“格式控制”,输出表列);,格式控制:由双引号括起来的字符串,用于指定输出格式。普通字符:按原样输出的字符格式说明:用来指定需输出数据的输出格式形式:%修饰符格式字符输出表列:需要输出的数据列表,彼此间用逗号分隔,可以是任意合法的表达式。,printf(“a=%dtb=%f”,a,b);,格式说明,输出表列,若此例中inta=5;floatb=20.5;输出结果:a=5b=20.500000,继续,表3.1用于输出的修饰符,返回,表3.2用于输出的格式字符,返回,例:格式输出:printf()函数,printf(“a+b=%5.2f”,c);,1)d格式符,作用:输出一个带符号的十进制整数(正数不输出符号)格式:%d%md%ld其中:%d按整型数据的实际长度输出;m字段宽度;%ld输出长整型数据%hd输出短整型数据,作用:输出一个无符号的八进制、十六进制或十进制整数。例:longa=10;shortb=-1;unsignedintc=65535;printf(“%5d,%o,%xn”,a,a,a);printf(“%hd,%#ho,%#hx,%hX,%hun”,b,b,b,b,b);printf(“%d,%o,%x,%un”,c,c,c,c);,-1原=1000000000000001-1补=1111111111111111,2)o、x和u格式符,输出结果:10,12,a-1,0177777,0 xffff,FFFF,6553565535,177777,ffff,65535,作用:用来输出一个字符例:charch=a;inta=65;printf(“%c,%d,%3cn”,ch,ch,ch);printf(“%ctb%3dn”,a,a);,3)c格式符,输出结果:a,97,aA65,一个整数,如果在0127之间,也可用字符形式输出,系统会将该整数转换成对应的ASCII码字符。,4)s格式符,作用:用来输出一个字符串格式:%s%ms%m.ns其中:m输出的字符串占m列;n输出字符串中左端n个字符,#includevoidmain()printf(“%sn”,“computer”);printf(“computern”);printf(“%3sn%-5.3s,%8.2sn”,“computer”,“computer”,“computer”);,例:,输出结果:computercomputercomputercom,co,作用:以小数形式输出单、双精度实数。格式:%f%m.nf其中:%f整数部分全部输出,隐含输出6位小数。m字段宽度(整数、小数位数、数符、小数点)n小数位数的个数,如:%12.4f,5)f格式符,例:,#includevoidmain()floatx=123.456;doubley=321.654321;printf(“%f,%-7.2f,%10.4fn”,x,x,x);printf(“%5.3fn%.0fn”,y,y);,输出结果:123.456001,123.46,123.4560321.654322,作用:以标准化的指数形式输出实数(小数点前必须有而且只能有一位为非0数字)。格式:%e%m.ne其中:%e默认输出6位小数m字段宽度(指数部分占5列)n小数部分的位数,6)e格式符,例:,#includevoidmain()floatf=123.456;printf(“%en%-10.2en%10En”,f,f,f);,输出结果:1.234560e+0021.23e+0021.234560E+002,输出表列中各输出项与各格式说明必须按照从左到右的顺序在类型上一一匹配。如果实型数据用%d输出,结果出错;整型数据用%f输出,结果为0。,注意:,输出表列可以是变量、常数、数组元素,函数引用及带运算符的表达式。例:printf(“%f%d%d%f”,3.14,a+b,x,cos(y);,当格式说明个数输出项时,输出不定值。,注意:,输出表列的求值顺序:VC是从右到左顺序求值的,输出仍从左至右。voidmain()inti=8;printf(“%d%d%d%dn”,i,i+,-+i,-i);,除X,E,G格式符外,其他格式符必须用小写字母。,输出结果:88-87,2.格式输入函数scanf(),格式:scanf(“格式控制”,地址表列);功能:按格式控制所规定的格式,从指定的输入设备(一般为键盘)上把数据输入到指定的变量中。,格式控制:普通字符:需原样

温馨提示

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

评论

0/150

提交评论