版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计主讲人: 杨丹、刘斌、张静常州信息职业技术学院第1页,共56页。单元一 程序设计基础 教学目标 【知识目标】1了解C语言的特点,初步熟悉C语言程序开发过程和VC+上机步骤;2理解语句的概念,了解C语言的可执行语句和return语句;3领会标识符的命名规则、C函数的定义和结构;4掌握C语言程序的结构、主函数的结构和程序执行的过程;5理解函数的定义、调用、声明及三者之间的关系和区别,理解参数传递的过程; 第2页,共56页。单元一 程序设计基础 【知识目标】6理解和掌握整型常量、实型常量、字符常量、字符串常量及其表示方法和符号常量的定义及使用;7掌握变量的定义、赋值和初始化;8了解整型
2、变量、实型变量、字符型变量在内存中的存储形式、存储长度和取值范围;9弄清自动变量、静态变量和外部变量的生存周期和作用域;10熟练掌握算术运算、赋值类运算等各种运算的运算规则、运算符的优先级别和结合方向;11领会算术表达式、赋值表达式和逗号表达式的值及计算过程。第3页,共56页。单元一 程序设计基础 教学目标 【能力目标】1初步熟悉VC+程序开发环境;2能够在所编写的程序中正确的定义和使用变量;3能够用C语言表达式表达实际问题,模仿编写简单应用问题的程序代码;4能够初步对C语言程序进行调试。第4页,共56页。引例描述 单元一 程序设计基础 求给定三位整数的各位数码。 对给定的一个三位整数,求出这
3、个三位数的各位上的数码,如:386,求得的结果是:百位数码是3,十位数码是8,个位数码是6。引例演示 第5页,共56页。1.1 C语言程序开发过程 一、C语言的特点1使用简洁、灵活、方便2运算符丰富、表达能力强3数据类型丰富4以函数作为模块单位5允许直接访问物理地址6生成目标代码质量高7可移植性好 第6页,共56页。1.1 C语言程序开发过程 二、程序开发过程 1编辑2编译3连接4执行 编辑编译连接执行编写输入源程序 .cpp .obj .exe结果第7页,共56页。1.1 C语言程序开发过程 三、Visual C+上机步骤 第一步:进入visual C+ 6.0用户界面。第二步:建立项目文件
4、。第三步:建立源程序文件。第四步:编译源程序。第五步:生成可执行文件。第六步:执行程序。第8页,共56页。【例1-1】求两个整数的和的c语言程序如下,对其进行编辑、编译、连接、执行。 1.1 C语言程序开发过程 #include int Sum(int x,int y);int main()int a,b,s;printf(请输入两个整数:);scanf(%d%d,&a,&b);s=Sum(a,b);printf(两个整数和是:%dn,s);return 0;int Sum(int x,int y)int z;z=x+y;return z; 第9页,共56页。1.2 函数及其结构 一、函数的定
5、义(一)语句1说明语句2可执行语句表达式语句函数调用语句空语句复合语句流程控制语句 第10页,共56页。1.2 函数及其结构 一、函数的定义(二)函数的定义函数定义的一般格式:返回值类型 函数名(参数类型1 形式参数1,参数类型N 形式参数N)数据定义部分数据操作部分 标识符的命名规则:以字母或下划线开头,由字母、数字、下划线组成。 第11页,共56页。1.2 函数及其结构 二、函数调用1函数调用的一般格式被调函数名(实际参数表)其中,实际参数简称为实参,实参表可由一个或多个实参组成,但必须与形参的个数和类型一致,两个实参之间用逗号分隔。2参数传递 在进行函数调用时,把实参的值传递给对应的形参
6、,所以,每个实参在函数调用之前都必须有确定的值。3函数调用的作用 第12页,共56页。1.2 函数及其结构 三、函数声明1函数声明的格式类型标识符 函数名(形参表);其中函数声明是一个说明语句必须在结尾加分号,其它与函数定义中的函数头完全相同。如果被调用函数写在主调函数之前,函数声明可省略不写,但应该养成书写函数声明的良好习惯。2函数声明的作用第13页,共56页。1.2 函数及其结构 四、return语句 1return语句的一般格式return (表达式);其中一对圆括号可省略不写。当函数没有返回值时,表达式甚至整个返回语句可省略不写。2return语句的作用 使程序流程从被调函数返回到主调
7、函数的函数调用处,并将被调函数的返回值带回到函数调用处。第14页,共56页。1.2 函数及其结构 五、主函数的结构C语言的主函数的一般格式:int main()数据定义数据输入函数调用数据输出return 0; 第15页,共56页。1.2 函数及其结构 六、程序的执行过程 C语言程序总是从主函数main()开始执行,依次执行主函数函数体内的每一个可执行语句,直到最后一个右花括号程序才执行完毕。第16页,共56页。1.2 函数及其结构 七、注释在VC+环境中,注释有两种:1以/*开头,以*/结束,中间写待注释的内容。2以/开头,在其后写待注释的内容。注释的作用:增强程序的可读性和用于对程序进行调
8、试。第17页,共56页。1.2 函数及其结构 【例1-2】以下C语言程序的功能是:对用户输入的矩形边长求矩形的周长。体会函数定义、调用、声明和注释的使用,理解程序执行和参数传递过程。 第18页,共56页。程序执行和参数传递过程:#include int Perimeter(int x , int y);/函数Perimeter的声明int main()int length, wide,pmt;printf(请输入矩形的长和宽:);scanf(%d%d,&length ,&wide ); /假设用户输入5 3pmt= ; printf(矩形的周长是:%dn,pmt);return 0;/*以下是
9、函数Perimeter的定义*/int Perimeter(int x , int y)int z;z= ;return z; lengthwide*pmt*53Perimeter(length, wide)x*y*z*532*x+2*y1616/函数调用16第19页,共56页。1.3 数据描述 一、常量(一)整型常量及表示法1十进制整型常量:2十进制长整型常量:3八进制整型常量:4八进制长整型常量:5十六进制整型常量:6十六进制长整型常量:用数码09表示的十进制整数在十进制整型常量后加小写字母l或大写字母L表示的数以数字0开头用数码07表示的整数,开头的数字0代表所表示的数为八进制数在八进制
10、整型常量后加小写字母l或大写字母L表示的数以数字0和小写字母x或大写字母X开头,用数码09或小写字母af或大写字母AF表示的十六进制整数,0 x代表所表示的数为十六进制数在十六进制整型常量后加小写字母l或大写字母L表示的数【示例】32,-7等都是十进制整型常量。 【示例】64L,65783 l 等都是十进制长整型常量。 【示例】 027,036,-015等都是合法的八进制整型常量,而049是不合法的八进制整型常量,因为,049中有数码9。 【示例】 032 l,057L等都是八进制长整型常量。 【示例】 0 xa8,0X59,-0X39等都是十六进制整型常量,而0 xag,2f等都不是合法的十
11、六进制整型常量,因为0 xag中有符号g;2f前没有0 x。 【示例】 0XFFl,0 x64L等都是十六进制长整型常量。 第20页,共56页。1.3 数据描述 一、常量(二)实型常量及表示法1十进制小数形式:由数码09、正负号和小数点(必须有小数点)组成的十进制小数表示的实数。2指数形式:由尾数、字母e或E、阶码三部分组成,其中尾数为十进制小数或整数,阶码为1位或2位的十进制(有符号)整数。 【示例】3.14,-0.271,0.0,0.,.6 等都是十进制小数形式的实型常量。 【示例】3.14159e2表示十进制数3.14159102,31415.9E-2表示十进制数31415.910-2,
12、它们都表示十进制小数314.159;1e03表示十进制数1103,这里的尾数1不能省,而E03,-2e314都是不合法的实型常量,因为E03中缺少尾数;-2e314中阶码是3位整数,超过了阶码的范围。 第21页,共56页。1.3 数据描述 一、常量(三)字符型常量及表示法 1字符型常量:用单引号括起来的单一字符(包括转义字符)称为字符型常量。 【示例】a,A,2, n,101等都是字符型常量,其中n,101都是转义字符,而,都是不合法的字符型常量,对于单撇号和反斜杠必须用转义字符来表示。 第22页,共56页。1.3 数据描述 一、常量(三)字符型常量及表示法 2转义字符:以反斜杠“”开头后跟一
13、个规定的字母代表一个控制字符;代表反斜杠字符“”, 代表单撇号字符“”;以反斜杠开头后跟13位八进制数代表ASCII码值为该八进制数的字符(此方法可表示ASCII字符集中的任一字符);以反斜杠和小写字母x开头,即以x开头,后跟12位十六进制数代表ASCII码值为该十六进制数的字符(也可表示ASCII字符集中的任一字符)。 字符形式含 义ASCII值(十进制)n回车换行,将当前光标位置移到下一行的开头10t 水平跳格(跳到下一个制表区的起始位置)9b退格,光标前移一列,光标经过位置不变8r回车(不换行)13f换页12反斜杠字符92单引号(撇号)字符39双引号字符34ddd1到3位8进制数代表的字
14、符xhh以x开头的1到2位16进制数代表的字符第23页,共56页。1.3 数据描述 一、常量(四)字符串常量及表示法 字符串常量:用双撇号括起来的字符序列称为字符串常量,简称字符串。字符串中含字符的个数称为该字符串的长度。 【示例】How do you do,A,He154lo.n都是字符串常量,它们的长度分别是13,1,7,应注意:154和n都是转义字符,都只代表一个字符。 第24页,共56页。1.3 数据描述 一、常量(五)符号常量 符号常量的定义方法:在程序的开头,使用如下的编译预处理命令:#define 符号常量 常量第25页,共56页。1.3 数据描述 【例1-3】符号常量的使用求圆
15、的面积 。 #include #define PI 3.14159double Area (double r);int main()double Radii, s;printf(请输入圆的半径:);scanf(%lf, &Radii);s = Area (Radii);printf(半径为%lf的圆的面积是%lfn, Radii, s);return 0;double Area (double r)double s;s = PI * r * r;return s;第26页,共56页。二、变量变量:在程序运行过程中,其值可以改变的量。(一)变量的定义1变量的定义变量定义的一般形式类别标识符 类型
16、标识符 变量名表;1.3 数据描述 第27页,共56页。二、变量存储类别标识符包括:auto(自动)、register(寄存器)、static(静态);类型标识符包括:short(短整型)、int(基本整型)、long(长整型)、float(单精度实型)、double(双精度实型)、char(字符型)等。 1.3 数据描述 【示例1】 int i,j,k; 缺省存储类别标识符系统默认是auto,通过此说明语句定义了3个变量i,j,k都是基本整型变量、都是自动变量。 【示例2】 static float a,b; 通过该说明语句定义了2个变量a,b都为单精度实型变量、都是静态变量 。第28页,共
17、56页。二、变量2变量的赋值 变量赋值的一般形式变量=表达式; 作用:把赋值号右端表达式的值赋给赋值号左端的变量,即把赋值号右端表达式的值写到赋值号左端变量的存储空间中。 1.3 数据描述 【示例】 a=b+2; 把b+2的值赋给变量a,此时,b必须已有确定的值。第29页,共56页。二、变量3变量的初始化 变量赋值的一般形式变量=表达式; 作用:把赋值号右端表达式的值赋给赋值号左端的变量,即把赋值号右端表达式的值写到赋值号左端变量的存储空间中。 1.3 数据描述 【示例1】 int a=5,b;在定义变量a,b的同时给变量a赋值为5,是对变量a进行初始化。 【示例2】 int a,b; a=5
18、; 先定义两个整型变量a,b,然后给变量a赋值为5,不是初始化。第30页,共56页。二、变量(二)整型变量1整型变量的类型标识符有符号基本整型:signed int无符号基本整型:unsigned int有符号短整型:signed short int无符号短整型:unsigned short int有符号长整型:signed long int无符号长整型:unsigned long int注:方括号的内容表示是可选的。 1.3 数据描述 【示例1】 int a,b;定义变量a,b都是整型变量、都是自动变量。【示例2】 unsigned long c,d;定义变量c,d都是无符号长整型变量、都是
19、自动变量。第31页,共56页。二、变量(二)整型变量2整型数据在内存中的存储形式 数据在内存中所占的字节数叫做数据的存储长度。VC+系统规定: short型数据在内存中占2个字节(16位),以16位二进制数的补码形式存放 ; int型和long型数据在内存中占4个字节(32位),以32位二进制数的补码形式存放 。1.3 数据描述 第32页,共56页。二、变量(二)整型变量3整型数据的取值范围 1.3 数据描述 类型存储长度取值范围signed short int2字节(16位)-3276832767 (-215215-1)unsigned short int2字节(16位)065535 (02
20、16-1)signed int4字节(32位)-21474836482147483647 (-231231-1)unsigned int4字节(32位)04294967295 (0232-1)signed long int4字节(32位)-21474836482147483647 (-231231-1)unsigned long int4字节(32位)04294967295 (0232-1)第33页,共56页。二、变量(三)实型变量1实型变量的类型标识符 类型标识符分别是:float(单精度实型)和double(双精度实型)。2实型数据的存储长度、取值范围和精度 1.3 数据描述 类型存储长度
21、取值范围有效数字精度float4字节(3.410-38 3.41038)67位6位double8字节(1.710-308 1.710308)1516位6位第34页,共56页。二、变量(四)字符型变量1字符型变量的类型标识符(有符号)字符型:signed char无符号字符型:unsigned char2字符型数据的存储形式及取值范围 字符型数据在内存中占1个字节,以其相应的ASCII码值的8位二进制数(补码)形式存储,char型数据的取值范围是-128127,unsigned char型数据的取值范围是0255,每一个数值对应一个字符。 1.3 数据描述 第35页,共56页。1.3 数据描述
22、【例1-4】将大写字母转换为小写字母。 #include char ToLower (char ch);int main()char ch, low;printf(请输入一个大写字母:);scanf(%c, &ch);low = ToLower (ch);printf(大写字母%c转换为小写字母是%cn, ch, low);return 0;char ToLower (char ch)char tlow;tlow = ch + 32;return tlow; 第36页,共56页。二、变量(五)动态变量 1自动变量 用存储类别标识符auto定义的变量是自动变量,自动变量的存储空间是在程序运行时分
23、配的,分配和释放由系统自动完成。使用时,应注意以下几点:在定义变量时,缺省存储类别标识符系统默认是自动变量;自动变量的存储空间在程序运行期间分配和释放,称为动态存储;1.3 数据描述 第37页,共56页。二、变量(五)动态变量 1自动变量自动变量只在定义它的那个局部范围内才起作用,称为局部变量;自动变量在赋值之前,它的值是不确定的;对同一个函数的两次调用之间,自动变量的值不保留。这是因为,调用一次之后存储空间被释放,再调用时,又另分配了存储空间。2寄存器变量 1.3 数据描述 【示例】int main()int x=1;void prt (void);int x=3;prt();printf(
24、2nd x=%dn,x);printf(1nd x=%dn,x);return 0;void prt(void)int x=5;printf(3nd x=%dn,x); 【示例】int main()int x;printf(x=%dn,x);return 0; 【示例】void count (int n);int main()count(1);count(2);return 0;void count(int n)int x=1;printf(%d:x=%d,n,x);x=x+2;printf(%dn,x); 第38页,共56页。二、变量(六)静态变量 用标识符static定义的变量是静态变量。
25、1静态变量是在编译时分配存储空间,程序运行结束存储空间才被释放,称为永久存储,即,存在于程序执行的全过程,直到程序执行结束;2静态变量的初始化是在编译时进行的,如果不显式为静态变量初始化,系统自动置静态变量的初值为0(整型)或0.0(实型);1.3 数据描述 第39页,共56页。二、变量(六)静态变量3在函数多次被调用的过程中,静态变量的值具有继承性,即本次调用的初值是上次调用结束时变量的值; 4静态局部变量的作用域具有局部性,静态局部变量的值只能在本函数中使用,但生存周期是永久存储。 1.3 数据描述 【示例】void increment(void);int main()increment(
26、);increment();increment();return 0;void increment(void)static int x=1;x=x+2;printf(%dn,x);【示例】void increment(void);int main()int x=5;increment();printf(1:x=%dn,x);return 0;void increment(void)static int x=1;x=x+2;printf(2:x=%dn,x); 第40页,共56页。二、变量(七)外部变量 定义在所有函数体之外的变量称为外部变量。1外部变量是在编译时为其分配存储空间的,在静态存储区
27、中存储,生存周期是永久存储,作用域是从定义点到本文件结束;2外部变量的初始化也是在编译时进行的,如果不显式为外部变量初始化,系统自动置外部变量的初值为0(整型)或0.0(实型)。1.3 数据描述 第41页,共56页。一、运算符与表达式1运算量:参加运算的对象称为运算量,运算量包括:常量、变量、函数等。2运算符:用来表示运算的符号称为运算符或操作符。3表达式:用运算符把运算量连接起来的符合C语言语法规则的式子称为表达式。 1.4 数据操作 第42页,共56页。二、算术运算1单目算术运算(正、负号运算)运算符:+ 正(取原值), 负(取相反数)。优先级别:+, 同级别,是第2级。结合方向:右结合。
28、1.4 数据操作 第43页,共56页。二、算术运算2双目算术运算运算符及运算规则:+(加),(减),*(乘),/(除),%(求余或模)。%的运算规则是:对于a%b,求a被b除所得的余数,结果的符号与被除数a的符号相同。优先级别:+,第4级;*,/,%第3级。结合方向:均为左结合。1.4 数据操作 第44页,共56页。二、算术运算2双目算术运算运算量的类型与结果类型: 对于+, *,/这四种运算,参加运算的两个运算量可以是整型数据,也可以是实型数据;如果两个运算量都是整型数据,则结果也是整型数据,如果两个运算量中至少有一个是实型数据,则结果也是实型数据。 对于模运算%,要求参加运算的两个运算量必
29、须都是整型数据,运算所得的结果也是整型数据。 1.4 数据操作 【示例】int a=5,b=2; 则 a+b 的结果为7,a/b的结果为2,而不是2.5。float a=5.0,b=2.0; 则 a+b的结果为7.0,a/b的结果为2.5。所以,C语言中的除法运算“/”,有两方面的含义: 当运算符两侧的运算量都是整型数据时,结果也是整型数据,此时称为整除; 当运算符两侧的运算量至少有一个是实型数据时,结果是double类型数据,此时称为除法。 【示例】int a=5,b= -5,c= 3,d= -3; 则 a%c的结果为2, b%c的结果为-2,a%d的结果为2,b%d的结果为2,a%b的结果
30、为0,b%a的结果为0,0%a的结果为0, 0%b的结果也为0。 因此,对一个正整数求模运算,不论除数是正数还是负数,所得的结果都是非负数;对一个负整数求模运算,不论除数是正数还是负数,所得的结果都是非正数,对0求模运算的结果还是0,即结果的符号与被除数的符号相同。 第45页,共56页。【例1-5】设n是一个两位整数,用C语言的表达式分别表示n的个位和十位数码。1.4 数据操作 解答:n的个位数码可表示为n%10;n的十位数码可表示为n/10。第46页,共56页。三、赋值类运算1赋值运算给变量赋值的一般形式:变量=表达式优先级别:赋值运算的优先级别是第14级的,仅高于逗号运算符。结合方向:右结
31、合。赋值表达式:根据运算符的优先级别和结合方向,通过加括号最终化为用赋值号把变量和表达式连接起来的式子称为赋值表达式。赋值表达式的值为赋值后赋值号左边变量的值。 1.4 数据操作 【示例1】int a;a=2;a=a+3;【示例2】int a=3,b;b=a=a+5; 第47页,共56页。三、赋值类运算2自反算术赋值运算自反算术赋值运算符包括:自反加赋值:+=;自反减赋值:=;自反乘赋值:*=;自反除赋值:/=;自反模赋值:%=。优先级别:与赋值运算符同级,都是第14级。结合方向:右结合注意:与赋值运算符一样,自反算术赋值运算符的左边通常也必须是变量。1.4 数据操作 【示例】int a=5,
32、b=3,c;c=b*=a+2; 第48页,共56页。三、赋值类运算3自加和自减运算前缀形式: +变量, - -变量后缀形式: 变量+, 变量- - 对于前缀形式+i或-i,运算规则是:把i+1或i-1赋给变量i,而表达式(+i或i)取变量i被赋值后的值,即+i与i=i+1等价或i与i=i-1等价。 对于后缀形式i+或i-,运算规则是:把i+1或i-1赋给变量i,而表达式(i+或i)取变量i被赋值前的值。优先级别:自加、自减运算符的优先级别是第2级。结合方向:右结合。 1.4 数据操作 【示例】int a=2,b=2,c=2,d=2;a+;b-;+c;-d; 表达式表达式执行前变量值表达式执行后变量值表达式的值a+232b-212+c233-d211第49页,共56页。【例1-5】设有定义int a=3,b,c=5;请将以下两条语句a-; b=a+c;写成一条语句。1.4 数据操作 解答:因为语句b=a+c;中的a使用的是语句a-;执行后a的值,所以,两条语句可写成一条语句b= -a+c;。第50页,共56页。四、逗号运算逗号运算符:,(逗号)优先级别:第15级,优先级别最低,低于一切其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中化学教学中化学实验创新与科学探究能力的培养课题报告教学研究课题报告
- 小学科学教学中实验操作的规范化训练课题报告教学研究课题报告
- 《船舶制造企业智能化生产过程中的质量控制与追溯系统构建》教学研究课题报告
- 人工智能核心概念解读
- 预制食品车间项目施工方案
- 20XX年物业公司工程部维修主管年终工作总结范文
- 离职协商话术
- 办公用房通风系统改善计划
- 土石方开挖后的地面恢复方案
- 物流产业园区建设项目环境影响报告书
- 2025-2026学年秋季第一学期学校德育工作总结
- 子宫颈高级别病变HPV疫苗接种与管理共识(修订)课件
- 妇科围手术期下肢静脉血栓预防与护理策略指南
- 2026元旦主题班会:2025拜拜2026已来 教学课件
- 2025江苏盐城东台市消防救援综合保障中心招聘16人备考题库新版
- 2025消控证考试题库及答案
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)数学试题(含答案详解)
- 小学五年级英语学情报告与分析
- 2025年下学期高二数学模型构建能力试题
- 2025年安徽合肥庐江县部分国有企业招聘工作人员17人笔试参考题库附答案
- 基于数据驱动的锂离子电池SOH估计与RUL预测:方法、模型与应用
评论
0/150
提交评论