




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计技术,主讲教师:陈莉工作单位:重庆大学计算机学院电子邮件:chenli_100,程序设计技术,C语言数据描述和C程序设计初步结构化程序设计基础和C语言的控制结构数组及其应用函数与C程序结构指针与函数指针与数组字符串及其应用结构体类型和联合体类型C语言的文件处理及其应用位运算与枚举类型,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1、C程序由函数组成。1)一个主函数2)多个子函数函数是C程序的基本单位。2、函数由两部分组成:1)函数头2)函数体3、C程序总是从主函数开始执行。,1.1C程序的基本结构,一个函数的C程序结构,#includevoidmain(),floatave,x,y,z;scanf(%f,%f,%f,对象声明部分,函数执行部分,函数头部描述函数的3个要素,它们是:1)函数名字2)函数的返回值数据类型3)函数参数(如果需要),函数体描述函数的具体功能实现方法。,函数头,函数体,1.1C程序的基本结构,多个函数构成的C程序结构,#include#defineSIZE80,voidmain()voidmyputc(charch);charstrSIZE;intj;gets(str);for(j=0;strj!=0;j+)myputc(strj);,voidmyputc(charch)charcc;cc=(ch=a,预处理语句,主函数,被调函数(子函数),函数声明语句,函数调用语句,1.1C程序的基本结构,说明:1一个源程序可由预处理语句(“#”字符开始)和至少一个函数或多个函数组成。2当一个源程序由多个函数组成时,只有一个主函数main其他函数叫子函数。3每个函数由函数头和函数体组成,函数体由若干语句组成4每一个语句都必须以分号“;”结尾,但预处理语句,函数头和花括号“”之后不能加分号。5以/*字符序列*/括起的部分为注释语句,可置于程序中的任何位置,计算机不执行。6C语言本身无输入/输入语句,输入/输出用库函数实现。,1.1.1C源程序的组成成分,用C语言书写的程序称为源程序,高级语言源程序必须被转为机器语言程序才能被执行。,C源程序的处理过程,程序基本功能解释:在主函数main中从键盘输入一个字符串,依次把字符串中的每一个字符取出作为参数调用函数myputc,在函数myputc中判断该字符是否小写字母,若是则将其转换为大写字母,否则不变,然后将其输出到屏幕上;直到字符串中的所有字符处理完为止。C程序及说明如下:该程序由名字为main的主函数和myputc子函数组成。C程序的执行是从主函数开始的,主函数中的所有语句执行完毕,则程序执行结束。,C源程序处理功能及过程,例1-1C源程序的处理过程演示,1.1.2C语言的基本元素,1C语言的字符集(P5)2标识符,标识符是给程序中的变量、常量、函数、数据类型等取的名字。标识符的命名规则:每个标识符由字母、数字或下划线组成其中第一个字符必须是字母或下划线标识符要区分字母的大小写标识符长度与所使用的环境相关用户自定义的合法标识符:ab1B1file_name_buf,1.1.2C语言的基本元素,标识符分为两大类:保留字操作系统或编译系统等已经用了的名字(P6)。用户标识符用户自定义标识符时,一方面要便于阅读;另一方面要注意避免含义上或书写时引起混淆。下面是不合法的用户标识符:5c不是以英文字母开头int与系统保留字同名up.to标识符中出现了非法字符”.”filename标识符中间出现了非法字符空格,3、函数在C语言中,函数是构成程序的基本模块,每个函数具有相对独立的功能。C程序使用的函数有三种:主函数(即main()函数)主函数是C程序执行的入口系统提供标准库函数使用标准库函数之前,用文件包含预处理语句将所使用库函数的头文件包含到程序中例:#include用户自定义函数程序员根据应用程序功能自己编写的函数,1.1.2C语言的基本元素,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.2C语言的基本数据类型,计算机系统的内存是按字节编址的,在内存里存放一个数据所需要的内存字节数称为一个数据所需要的内存空间,程序中不同的数据在系统内存中所要求的存储空间大小也不一样,因而在程序设计中需要区分所处理数据的数据类型。,1.2C语言的基本数据类型,C语言提供的数据类型数据类型,数据是计算机程序使用的原始资料或信息,是数字、符号或事件的集合,是计算机程序操作或运算的对象。,程序要处理的数据都存放在内存中,内存可以看成一些顺序编号的房间,房间的固定大小是8位每个数据占用一个或多个房间房间编号的标准称呼为地址使用汇编语言表示的运算ADDWORDPRT1000,10SUBBYTEPRT1007,1,1000号,1007号,1001号,程序中数据、变量与存储器的关系,在程序中直接通过地址来访问内存中的数据是繁琐而易错的。通常是用有名字的变量(Variable)来代表存储单元。变量有一个名字和值域(取值范围);变量与一个存储区域相关联;,1000号,1007号,1001号,用变量a来代表,用变量b来代表,于是就可以此来表示运算:a+10ab-1b,程序中数据、变量与存储器的关系,1.2C语言的基本数据类型,常量和变量C源程序中直接书写的数据称为常量,存放一个数据所需要的内存空间称为变量,内存空间中存放的数据内容称为变量值。变量由变量名(标识符)来区别。变量值是通过变量名引用的数据。所以,常量和变量在程序中都是数据。常量数据在源程序的整个执行过程中保持不变。而变量值在程序执行过程中是可以被程序修改的,是一个变化的量。符号常量:在C程序中,还可用标识符来代表一个常量,称为符号常量。,1.2.1C语言的整型数据类型,1、整型常量C语言的整型常量可以有三种表示形式:十进制整数。如888,-123,0等。八进制整数。以0开头的整数,如0777,-011等。十六进制整数。以0 x开头的整数,0 x123,0 xff等。长整型常量:12L,015L,0 x123L无符号整型常量:328u,0 x32U长的无符号整型常量:123LUC语言的整型数据用机器的一个字长来存储,所以整型数据的表示范围与计算机系统的软硬件环境有关。字长为16位的计算机系统整型数据表示的范围为-3276832767(-215215-1)字长为32位的计算机系统中整型数据表示的范围为-231231-1,1.2.1C语言的整型数据类型,2整型变量存放整型数据的内存空间称为整型变量,C语言提供了基本整型、短整型、长整型和无符号整型四种大小不同的单位空间来存放整型数据。,类型名意义字节数经度范围short短整型2-3276732768int基本整型4-21474836472147483648long长整型4-2147483647L2147483648Lunsignedshort无符号短整型2065535unsignedint无符号基本整型404294967295UUnsignedlong无符号长整型404294967295UL,1.2.1C语言的整型数据类型,3.变量定义的一般格式数据类型名变量名表;数据类型名:用以指明变量名表中变量的类型。int(基本整型)、long(长整型)、short(短整型)。变量名表:由一个或若干个逗号分隔的变量组成。整型变量的定义:intx1,x2;(定义变量x1,x2为整型变量)longx,y;(定义变量x,y为长整型变量)shortw,z;(定义变量w,z为短整型变量)unsignedc,d;(定义变量c,d为无符号整型变量)例1-2整型变量的定义和输出示例,1.2.2C语言的实型数据类型,1实型常量实型数在C语言中称为浮点数,实数有两种表示形式:十进制数形式由数字和小数点组成,如:888.88,0.88等。指数形式。如123e5表示123105,123e-5表示12310-52实型变量存放实型数据的数据对象称为实型变量实型变量分为单精度型和双精度型单精度变量比双精度变量的精度范围小,运算误差大。,类型名意义字节数精度范围float单精度实型41.175494e-0383.402823e+038Double双精度实型82.225074e-3081.797693e+308,1.2.2C语言的实型数据类型,3.实型变量的定义floatx,y;(定义变量x,y为单精度实型变量)doublez;(定义变量z为双精度实型变量)例1-3实型变量的定义和输出注意:单精度变量提供6-7位有效十进制数字双精度变量提供15-16位有效十进制数字单精度变量不能满足运算要求时,可用双精度变量例如:floata;a=111111.111f;因为单精度变量只能接收7位有效数字,因此最后2位小数不起作用。修改如下:doublea;a=111111.111;,1.2.3C语言的字符型数据类型,1.字符常量普通字符:是单引号括起来的一个可打印字符例如:a?A转义字符:转义字符是由反斜杠开头的字符序列,此时反斜杠字符后面的字符或字符序列转变为特定含义。例如:102表示字符B(102)8=(1000010)2=(66)10或x42表示字符B(42)16=(1000010)2=(66)10注意:对于32位的计算机系统可用两种字符集来存储字符ASCII码字符集(1字节)Unicode字符集(2字节)Unicode是一种重要的交互和显示的通用字符编码标准。它对每个字符进行16位值的编码设置,可存储几万个字符,允许交换、处理和显示多语言文本以及公用的专业和数学符号。前128个Unicode码同ASCII码具有同样的字节值。,1.2.3C语言的字符型数据类型,2.字符变量字符型变量可存储一个字符,占用一个字节。字符型变量定义:char;例如:charch;(定义变量ch为字符型变量)注意:在C语言中字符型变量和整型变量是兼容的,字符型变量中存储的是对应字符的ASCII码值。即字符型数据可以与整型数据一起参与运算,但限定在0255的整数范围内。例1-4字符变量的定义和输出,1.2.3C语言的字符型数据类型,3.字符串常量在C语言中没有专门的字符串变量,如果需要将字符串常量存放到变量中,则需要使用字符数组的形式。字符串常量:用双引号括起来字符序列(含转义字符)。如:“Hello,World!”、“a”、“1”字符常量与字符串常量在表示形式和存储性质上的区别:如:a是一个字符常量,占1个字节的存储空间。“a”是一个字符串常量,占2个字节的存储空间,即为a和0(NULL字符作为字符串的结束标志)。字符串常量的大小写有区别:如:“abd”与“abD”不同字符串常量所占存储空间:字符串中所含字符个数+1如:“abCdt123n111”中含11个字符,占12个字节,1.2.3C语言的字符型数据类型,4.符号常量在C语言中,常量可以用符号代替,代替常量的符号称为符号常量(或称宏常量)。符号常量一般用大写字母表示,在使用前须预先定义。定义格式:#define标识符常量例如:#definePI3.1415926#defineEOF-1在程序中使用符号常量的好处:在程序中有多处使用某个符号常量后,只需修改该符号常量定义中的常量值,程序中所有该符号常量的引用处对应变化,使修改程序的工作简单化。,1.2.4变量的初始化,变量的初始化指的是为变量第一次赋值。变量初始化的两种方法:在程序执行过程中通过赋值运算符实现赋初值在定义变量的同时为变量赋初值变量初始化的一般格式:=;例如:inta,x1=100,y1=200;longb,x2=100L;floatc,x3=100.30f;doublex4=100.5;charch=A;,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.3基本运算符和表达式,1.运算符的分类C语言的运算符非常丰富,把除了控制语句和输入输出操作以外的几乎所有基本操作都作为运算符处理。C语言的运算符大致分为以下几类:算术运算符关系运算符逻辑运算符赋值运算符条件运算符位运算符逗号运算符指针运算符其他运算符如:分量运算符、下标运算符、sizeof运算符、函数调用运算符、强制数据类型转换运算符等。按运算符两边结合运算对象的个数,将运算符又分成:单目运算符:正号“+“,负号“-”,自增“+“,自减“-”双目运算符:加“+”、减“-”、乘“*”、除“/”和求模“%”三目运算符:条件运算符“?”,2.运算符的优先级别和结合性规则各种运算符分为15个由低到高的优先级别。参见表1.5当运算对象两边运算符优先级别不同,按优先级从高到低当运算对象两边运算符优先级别相同,按结合规则处理。左结合性规定运算顺序先左后右。如:表达式5+x-1,x两边运算符为同级别+号和-号,结合性为左结合性,即x先与左边的+号结合,执行5+x的运算,然后再与右边的-号结合。右结合性规定运算顺序先右后左。例如,表达式x=y=5,运算对象y两边均为同级别=号,结合性为右结合性,即y先与其右边的=号结合得到值,然后再与其左边的=号结合将值赋给x。(C语言中运算符的优先级别和结合性参见P231.3.7)例1-13右结合性运算符的使用,1.3基本运算符和表达式,1.3.1算术运算符和算术表达式,由算术运算符和括号将运算对象连接起来的式子称为算术表达式。运算对象包括常量、变量、函数等,值得注意的是单个的常量、变量或函数本身也是表达式。注意:当两个整数相除时,得到的结果仍然是整数。例如:7/5=1,-7/5=-1。求模运算就是求余数,参加求模运算的两个对象必须是整型对象,运算结果的符号与第一个运算对象相同。例如:7%5=2,-7%5=-2,7%-5=2。a*b/c-1.5+a是一个合法的表达式。a+b-2.3%6不是一个合法的表达式。算术表达式求值顺序:()函数+、-*、/、%+、-例1-5算术运算符使用示例。,1.3.2赋值运算符和赋值表达式,赋值运算符“=”的作用是将一个数据或是一个表达式的值赋给一个变量。(右结合性)赋值表达式的一般形式:变量=表达式其中:“表达式”可是常量、变量、赋值表达式或其它的表达式。假如:intx,a,b;floaty;x=5.5将实型数5.5赋给整型变量xy=x+1先计算x+1的值,然后将它赋给实型变量y。a=b=4先算赋值表达式b=4的值为4,再赋给变量a注意:当赋值运算符两边的对象类型不一致时,在赋值时要自动进行类型转换,转换时以赋值运算符左边的变量类型为准。故x的值为5,y的值为6.00000,a的值为4。,1.3.2赋值运算符和赋值表达式,注意:C语言的赋值表达式与赋值语句的区别赋值语句的一般形式:;或变量名=表达式;例如:赋值表达式:a=x+y赋值语句:a=x+y;赋值语句作为单独的C语句出现赋值表达式作为一个运算对象出现在另外的表达式或语句中。例1-6赋值表达式和赋值语句的使用,1.3.3自反运算符,自反运算符是在赋值运算符“=”的前面加上其他运算符构成的一种复合运算符,所以它是一种“复合的赋值运算符”,简称为“复合赋值符”。C语言规定,凡是双目运算符都可以与赋值运算符一起组成复合赋值符,其结合性为右结合性。复合赋值符共有以下10个:+=、-=、*=、/=、%=、=、/*对整型常量进行自增*/inta=100;-(a+100);/*对表达式a+100进行自减*/自增、自减运算符有前缀和后缀两种形式前缀形式(即+、-符号出现在变量的左侧)时,对变量实施的运算是”先增值后引用”(对赋值有意义)。后缀形式(即+、-符号出现在变量的右侧)时,对变量实施的运算是”先引用后增值”(对赋值有意义)。,1.3.4自增、自减运算符,#includevoidmain()intx,y,z,w,i=5;x=i+;(x为5,i为6)y=i-;(y为6,i为5)z=+i;(z为6,i为6)w=-i;(w为5,i为5)printf(%d,%dn,x,y);/*输出:5,6*/printf(%d,%dn,z,w);/*输出:6,5*/注意:如果不赋值运算,只想增加变量i值时,无论选前缀和后缀都相同。如i+与+i都使i值增加1。,例1-9自增、自减运算符的使用,1.3.5逗号运算符和逗号表达式,逗号在许多地方作为分隔符用以分隔若干个对象。C语言提供的逗号也是一种特殊的运算符,逗号运算符用于将两个以上的表达式连接起来,具有左结合性。逗号表达式的形式为:表达式1,表达式2,表达式n从左到右依次计算每个表达式的值,整个逗号表达式的值和类型为最右边的表达式n的值和类型。使用逗号表达式的目的不是为得到整个逗号表达式的值,而是想分别得到各个表达式的值,以简化语句例1-10逗号运算符的使用,1.3.6sizeof运算符,sizeof运算符是C语言中特有的一个单目运算符,其作用是返回其数据对象所占内存单元的字节数。运算符使用形式:sizeof()其中:数据对象可以是常量、变量、表达式和数据类型名。注意:当数据对象为表达式,则sizeof运算符不会对该数据对象进行任何运算。例1-11sizeof运算符使用示例例1-12sizeof运算符使用示例,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,1.4不同类型数据混合运算及数据转换,1.不同类型数据的混合运算在C语言中,整型数据、单精度实型数据、双精度实型数据、字符型数据之间可以进行混合运算。C语言的数据类型从某种意义上说也有高低不同的级别,其级别的高低与数据所占内存单元的字节数相关。2.混合运算中两种数据类型转换方式隐式转换显式转换,1.4.1不同数据类型的隐式转换,在不同类型数据混合运算时,如果没有进行强制(显式)类型转换,则系统会进行自动(隐式)转换。自动转换规则:(参见P24图1.3)横向转换规则:无条件转换纵向转换规则:当运算符两边数据类型不同,低高系统先将表达式中不同类型的数据对象转换成同一类型的数据再进行运算。即先升级转换、后运算、最后按赋值号左边变量的类型进行赋值操作。例1-14混合运算中自动数据类型转换,1.4.2不同数据类型的显式转换,在C程序设计中,有时需要对数据进行强制(显式)类型转换。显式转换形式:(类型名)功能:在本次运算中,强迫表达式的值转换成指定的数据类型参加运算。注意:若被转换的对象不是单个变量,则需用括号将整个被转换对象括起来。类型转换只对标注强制转换这一次起作用,在程序的其余位置,变量保留其原有值。例1-15混合运算中强制数据类型转换,第一章C语言数据描述和C程序设计初步,C程序的基本结构C语言的基本数据类型基本运算符和表达式不同类型数据混合运算及数据转换C程序设计初步,一个程序应包括对数据的描述和对数据处理的描述。对数据的描述,即数据结构。在C语言中,系统提供的数据结构,是以数据类型的形式出现的。对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序设计的灵魂。为此,著名计算机科学家沃思(NikiklausWirth)提出一个公式:数据结构+算法=程序,1.5C程序设计初步,1.5.1算法基本概念及算法描述,1.算法的概念与特征算法的概念算法是计算机系统处理实际问题的方法和步骤。算法设计必须准确反映应用问题的数学模型,算法的每一步都能用计算机高级语言描述。算法的特征有穷性:能在执行有穷步操作之后结束确定性:算法每一步操作必须惟一确定可执行性:是可以付诸实施并能具体实现的操作输入数据:必须有0个或多个输入数据输出数据:必须有1个或多个输出数据,1.5.1算法基本概念及算法描述,2.算法的基本结构及算法描述算法的基本结构(P28图1.6)顺序结构(a)顺序结构的特点:各个操作按其出现的先后次序依次顺序执行一遍。选择(分支)结构(b)(c)选择结构的特点:根据给定条件的成立与否来选择执行不同的操作。循环结构(d)循环结构的特点:根据所给定条件来判断是否需要重复地执行一组操作,当所给条件为真时执行,否则退出。,1.5.1算法基本概念及算法描述,算法的描述人类的自然语言程序流程图流程图又称为程序框图,使用一些图形符号来表示算法中的各个执行或判断过程,使用流程线(有向线段)来表示算法执行中每一个步骤在执行上的时间顺序。流程图可以非常清楚地描述整个算法执行的过程。N-S图伪语言,算法描述示例一:已知鸡兔同笼,总头数为H,总脚数为F,求鸡兔各有多少只?分析问题,建立数学模型,列出有关方程式。,1.5.1算法基本概念及算法描述,1.5.1算法基本概念及算法描述,算法分析和设计该算法用顺序结构流程图表示根据算法流程图编写C程序#includevoidmain()inth,f,x,y;scanf(%d,%d,算法描述示例二:求1+2+100之和。分析问题,建立数学模型该问题是一个典型的数列问题数学公式:S=算法分析和设计该算法用循环结构流程图表示根据算法流程图编写C程序main()ints=0;inti=1;while(i输出实际宽度,可填充0或空格(无0为空格)。否则按实际宽度输出。星号可选项(*):由该控制项对应的变量值作为输出表列中其后面一个输出项的输出宽度。域宽可选项(m/m.n):指定输出数据所占输出宽度。输出总宽度为m(正整数)位,其中小数点占1位,小数部分为n位。长度修正可选项(l/h):指定输出数据按长整型或双精度输出,还是按短型数据输出。L表示长,h表示短。格式控制字符:参见表1.6,格式控制字符及其意义,1.5.3C程序的基本输出函数,Printf格式输出示例,d格式符:处理十进制整数%d实际长度输出%md按指定宽度(实际宽度m:直接输出)%-md同上,靠左边右补空%ld长整型例:intb=123,c=12345;longa=135790;printf(“%4d,%-4d,%4d,%8ld”,b,b,c,a);结果:123,123,12345,135790,Printf格式输出示例,Printf格式输出示例,例1-18printf函数控制项中“*”可选项的使用例1-19printf输出函数的返回值示例,x、o、u格式符:分别对应十六进制、八进制、无符号整数形式例:inti=15;printf(“%d,%u,%o,%xn”,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菏泽银行面试题目及答案
- 2025年注册验船师资格考试(A级船舶检验专业基础环境与人员保护)综合试题及答案一
- 北京市门头沟区2023-2024学年七年级下学期第一次月考英语考试题目及答案
- 2025年图书馆管理员招聘面试模拟题及答题技巧
- 2025年医疗器械质量认证考试全真模拟题
- 2025年财务风险管理师高级实务操作手册及考试指南
- 2025年高空作业平台设计与使用技能考试题库及答案
- 2025年高中物理学科知识与教学能力面试题解
- 2025年政府机关招聘行政岗位笔试模拟题及答案
- 2026届江苏省无锡江阴市化学高三上期末教学质量检测模拟试题含解析
- 假期返校安全教育
- 建设工程管理的毕业论文
- 中国工笔花鸟画技法课件
- 正面吊安全管理制度
- 中医辨证施护课件
- 学校十五五规划(同名11527)
- 高中心理健康测试题及答案大全
- 小学二年级上册《健康成长》全册教学设计
- 土建安全员c类考试试题及答案
- T/SHPTA 031-2022电缆和光缆用复合防护尼龙12护套料
- 高中生国防教育
评论
0/150
提交评论