1、3.1 C语言概述 3.4 3.4 数组与函数数组与函数 3.5 3.5 指针指针3.3 C语言程序设计3.2 数据类型、运算符与表达式第3章 计算机程序设计基础计算机程序设计基础 3.1 C语言概述语言概述 3.1.1 C语言的特点语言的特点C语言特性语言特性:1)C是高级语言是高级语言;2)C是结构式语言是结构式语言;3)C语言功能齐全语言功能齐全;4)C语言适用范围大语言适用范围大;5)C语言应用指针语言应用指针。3.1 C语言概述语言概述 3.1.1 C语言的特点语言的特点C语言优点语言优点:(1)简洁紧凑、灵活方便)简洁紧凑、灵活方便;(2)运算符丰富)运算符丰富;(3)数据类型丰富
2、)数据类型丰富;(4)表达方式灵活实用)表达方式灵活实用;(5)允许直接访问物理地址,对硬件进行操作)允许直接访问物理地址,对硬件进行操作;(6)生成目标代码质量高,程序执行效率高)生成目标代码质量高,程序执行效率高;(7)可移植性好)可移植性好;(8)表达力强)表达力强。3.1 C语言概述语言概述 3.1.2 运行运行C语言的步骤语言的步骤1)调用编辑程序,输入)调用编辑程序,输入C源程序,建立源程序,建立C源程序文件。源程序文件。C源程序文件的源程序文件的扩展名为扩展名为.c。2)用编译命令对)用编译命令对C源源 文件进行编译和连接,生成目标文件(扩展名文件进行编译和连接,生成目标文件(扩
3、展名为为.obj)与可执行文件(扩展名为)与可执行文件(扩展名为.exe)。如果在这一步中发现有错误,)。如果在这一步中发现有错误,则要重新调用编辑程序对源程序进行编辑修改,再进行编译与连接,直则要重新调用编辑程序对源程序进行编辑修改,再进行编译与连接,直到在编译连接过程中没有错误发生为止。到在编译连接过程中没有错误发生为止。3)运行可执行文件得到结果。如果在运行过程中发现有错误,则要重)运行可执行文件得到结果。如果在运行过程中发现有错误,则要重新调用编辑程序对源程序进行编辑修改,在进行编译、连接与运行,直新调用编辑程序对源程序进行编辑修改,在进行编译、连接与运行,直到没有错误发生为止。到没有
4、错误发生为止。3.2 数据类型、运算符与表达式数据类型、运算符与表达式 3.2.1 C语言的数据类型语言的数据类型整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。3.2 数据类型、运算符与表达式 3.2.2 常量与变量常量与变量1.常量常量(1)整型常量)整型常量(2)实型常量)实型常量(3)字符常量)字符常量(4)字符串常量)字符串常量 3.2 数据类型、运算符与表达式 3.2.2 常量与变量常量与变量2.变变量量(1)完整的变量定义语句格式如下:)完整的变量定义语句格式如下:存储类型符存储类型符 数据类型符数据类型符 变量名变量名
5、1=初值初值1,变量名变量名n=初值初值n;(2)变量的数据类型)变量的数据类型(3)变量的存储类型)变量的存储类型(4)变量的初始化)变量的初始化(5)变量的生存期)变量的生存期(6)变量的作用域)变量的作用域 3.2 数据类型、运算符与表达式 3.2.3 运算符与表达式运算符与表达式1.运算符运算符2.表达式表达式(1)算术表达式(2)关系表达式(3)逻辑表达式(4)赋值表达式(5)逗号表达式 3.3 C语言程序设计语言程序设计 3.3.1 顺序结构程序设计顺序结构程序设计#includemain()int a,b,c;/定义三个整型变量定义三个整型变量 scanf(%d%d,a,b);/
6、从键盘中输入从键盘中输入a和和b的值的值 c=a;a=b;b=c;/完成完成a和和b值得交换值得交换 printf(a=%d,b=%dn,a,b);3.3 C语言程序设计语言程序设计 3.3.2 选择结构程序设计选择结构程序设计1.单分支选择语句单分支选择语句在在C 语言中,实现单分支结构的语句称为语言中,实现单分支结构的语句称为if 语句。语句。格式格式if(表达式)语句;(表达式)语句;功能功能 计算表达式的值。如果为真,则执行语句,否则不执行语句。计算表达式的值。如果为真,则执行语句,否则不执行语句。说明说明1)表达式可以是任何类型,常用的是关系或逻辑表达式。)表达式可以是任何类型,常用
7、的是关系或逻辑表达式。2)语句可以是任何可执行语句,也可以是另一个)语句可以是任何可执行语句,也可以是另一个if 语句(称嵌套语句(称嵌套if 语语句)。句)。3.3 C语言程序设计语言程序设计 3.3.2 选择结构程序设计选择结构程序设计2.双分支选择语句双分支选择语句在在C语言中,实现双分支结构的语句称为语言中,实现双分支结构的语句称为if-else语句。语句。格式格式if(表达式表达式)语句语句1;else 语句语句2;功能功能计算表达式的值。如果为真则执行语句计算表达式的值。如果为真则执行语句1,否则执行,否则执行语句语句2。3.3 C语言程序设计语言程序设计 3.3.2 选择结构程序
8、设计选择结构程序设计3.多分支选择语句多分支选择语句格式格式swtich(表达式表达式)case 常量表达式常量表达式1:语句组:语句组1;break;case 常量表达式常量表达式2:语句组:语句组2;break;case 常量表达式常量表达式n:语句组:语句组n;break;default:语句组语句组n+1;3.3 C语言程序设计语言程序设计 3.3.2 选择结构程序设计选择结构程序设计3.多分支选择语句多分支选择语句功能功能计算表达式的值,如果和常量表达式计算表达式的值,如果和常量表达式i值相同,则执行值相同,则执行语句组语句组i后结束。如果和每一个常量表达式都不相同,则执后结束。如果
9、和每一个常量表达式都不相同,则执行语句组行语句组n+1后结束。后结束。3.3 C语言程序设计语言程序设计 3.3.2 选择结构程序设计选择结构程序设计例例1:输入一个日期,输出该日期是该年度的第几天。main()int y,m,d,dete=0,flag=1;printf(input year,month,day:);scanf(%d,%d,%d,&y,&m,&d);switch(m)case1:dete=0;break;case2:dete=31;break;case3:dete=31+28;break;case4:dete=31+28+31;break;case5:dete=31+28+3
10、1+30;break;case6:dete=31+28+31+30+31;break;case7:dete=31+28+31+30+31+30;break;case8:dete=31+28+31+30+31+30+31;break;case9:dete=31+28+31+30+31+30+31+30;break;case10:dete=31+28+31+30+31+30+31+30+31;break;case11:dete=31+28+31+30+31+30+31+30+31+30;break;case12:dete=31+28+31+30+31+30+31+30+31+30+31;break
11、;default:printf(inptu error of month!);flag=0if(m2)&(y%4=0)&(y%100!=0)|(y%400=0)dete+;dete+=d;if(flag=1)printf(year=%d month=%d dete=%d-no=%dn,y,m,d,dete);3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计1.当型结构当型结构while 语句语句while语句可以实现当型循环结构。语句可以实现当型循环结构。格式格式while(表达式)(表达式)语句;语句;功能功能计算表达式值,为真则执行语句;反复执行上述操作,计
12、算表达式值,为真则执行语句;反复执行上述操作,直到表达式值为假时止。直到表达式值为假时止。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计2.直到型结构直到型结构do-while 语句语句do-while 语句可以实现直到型循环结构。语句可以实现直到型循环结构。格式格式 do 语句;语句;while(表达式);(表达式);功能功能执行语句,计算表达式的值,若为执行语句,计算表达式的值,若为0(假)则退出循(假)则退出循环;否则返回环;否则返回do处,继续循环。处,继续循环。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计3.次数型
13、结构次数型结构for 语句语句for语句可以实现次数型循环结构。语句可以实现次数型循环结构。格式格式for(表达式(表达式1;表达式;表达式2;表达式;表达式3)语句;)语句;功能功能第一步计算表达式第一步计算表达式l;第二步计算表达式;第二步计算表达式2,若为,若为0(假)(假)则不执行语句,退出循环;否则执行语句,再计算表达式则不执行语句,退出循环;否则执行语句,再计算表达式3;转第二步。转第二步。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计4.无条件转移无条件转移goto语句语句格式格式goto 语句标号;语句标号;功能功能强制中断执行本语句之后的语句
14、,跳转到语句强制中断执行本语句之后的语句,跳转到语句标号对应的语句继续执行程序。标号对应的语句继续执行程序。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计5.break 语句语句格式格式break;功能功能强制中断当前的循环,不再执行循环体中强制中断当前的循环,不再执行循环体中break 后面后面的语句而退出循环。的语句而退出循环。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计6.continue语句语句格式格式continue;功能功能不执行循环体中本语句之后的语句,重新判断循环控不执行循环体中本语句之后的语句,重新判断循环
15、控制条件,继续循环。制条件,继续循环。3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计例例1:计算并输出:计算并输出1+2+3+100的值。的值。当型循环结构程序:当型循环结构程序:main()long sum=0,i;i=1;while(i101)sum+=i+;printf(1+2+3+100=%dn,sum);3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计例例1:计算并输出:计算并输出1+2+3+100的值。的值。直到型循环结构程序:直到型循环结构程序:main()long sum=0,i;i=1;do sum+=i+;w
16、hile(i101)printf(1+2+3+100=%dn,sum);3.3 C语言程序设计语言程序设计 3.3.3 循环结构程序设计循环结构程序设计例例1:计算并输出:计算并输出1+2+3+100的值。的值。次数型循环结构程序:次数型循环结构程序:main()long sum=0,i;for(i=1;i101;i+)sum+=i;printf(1+2+3+100=%dn,sum);3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用1.一维数组一维数组(1)一维数组的定义)一维数组的定义格式格式存储类型存储类型 数据类型数数据类型数 组名组名l长度长度1,数组名,数组
17、名2长度长度2,;功能功能定义指定定义指定“存储类型存储类型”和和“数据类型数据类型”的若干个一维的若干个一维数组。数组。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用1.一维数组一维数组(2)一维数组的初始化)一维数组的初始化格式格式存储类型数据存储类型数据 类型数组名类型数组名1长度长度1=初值表初值表l,;功能功能定义指定定义指定“存储类型存储类型”和和“数据类型数据类型”的若干个一维数的若干个一维数组,分别赋子初值。组,分别赋子初值。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用1.一维数组一维数组(3)一维数组元素的引用)一维数
18、组元素的引用当定义了一维数组之后,就可以引用这个一维数组中的任何元素。引用方当定义了一维数组之后,就可以引用这个一维数组中的任何元素。引用方法如下:法如下:数组名数组名下标下标C语言中还允许使用语言中还允许使用“指针方式指针方式”来引用数组元素,称为来引用数组元素,称为“指针法指针法”。任何一个数组元素的引用都可以看成一个变量的使用,可以参与组成表达任何一个数组元素的引用都可以看成一个变量的使用,可以参与组成表达式。如果数组元素要参与表达式运算,必须有值。式。如果数组元素要参与表达式运算,必须有值。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用2.多维数组多维数组(
19、1)多维数组的定义)多维数组的定义多维数组的定义也是通过数据定义语句进行的,具体语句格式与功能如下:多维数组的定义也是通过数据定义语句进行的,具体语句格式与功能如下:格式格式存储类型存储类型 数据类型数据类型 数组名数组名长度长度1长度长度2长度长度k。功能功能定义指定定义指定“存储类型存储类型”和和“数据类型数据类型”的一个的一个k维数组,其中有维数组,其中有“长长度度1*长度长度2*长度长度k”个数组元素,数组元素的一般表示:数组名个数组元素,数组元素的一般表示:数组名下标下标1下标下标2 下标下标k。3.4 数组与函数数组与函数 3.4.1数组的定义与引用数组的定义与引用2.多维数组多维
20、数组(2)多维数组的初始化)多维数组的初始化多维数组的切始化(即给数组元素赋初值)和一维数组初始化方法基本相多维数组的切始化(即给数组元素赋初值)和一维数组初始化方法基本相同,也是在定义数组时给出数组元素的初值。同,也是在定义数组时给出数组元素的初值。多维数组初始化可以分为下列多维数组初始化可以分为下列5种方式:种方式:1)分行给多维数组所有元素赋初值;)分行给多维数组所有元素赋初值;2)不分行给多维数组所有元素赋初值。)不分行给多维数组所有元素赋初值。3)只对每行的前若干个元素赋初值:)只对每行的前若干个元素赋初值:4)只对前若干行的前若干个元素赋初值。)只对前若干行的前若干个元素赋初值。5
21、)若给所有元素赋初值,第一维的长度可以省略。必须给出所有数据元)若给所有元素赋初值,第一维的长度可以省略。必须给出所有数据元素的初值,如果初值的个数不正确,系统会作为错误处理。素的初值,如果初值的个数不正确,系统会作为错误处理。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用2.多维数组多维数组(3)多维数组元素的引用)多维数组元素的引用定义了定义了k维数组之后,就可以引用这个维数组之后,就可以引用这个k维数组中的任何元素。引用方法如维数组中的任何元素。引用方法如下:下:数组名数组名下标下标下标下标2下标下标k 其中其中“下标下标1”称第称第1维的下标,维的下标,“下
22、标下标2”称第称第2维的下标,维的下标,“下标下标k”称称第第k维的下标。这种引用多维数组元素的方法也称为维的下标。这种引用多维数组元素的方法也称为“下标法下标法”。同样需。同样需要注意下标越界会造成运行结果不可预料的问题。要注意下标越界会造成运行结果不可预料的问题。对多维数组元素,也允许使用对多维数组元素,也允许使用“指针方式指针方式”来引用数组元素,称为来引用数组元素,称为“指针指针法法”。和一维数组元素引用相同,任何多维数组元素的引用都可以看成一个变量和一维数组元素引用相同,任何多维数组元素的引用都可以看成一个变量的使用,可以被赋值,可以参与组成表达式。的使用,可以被赋值,可以参与组成表
23、达式。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引用3.字符数组字符数组字符数组的定义语句如下:字符数组的定义语句如下:存储类型存储类型 char 数组名数组名 长度长度1长度长度2长度长度k初值初值表表,其功能是定义若干个字符型的其功能是定义若干个字符型的k维数组,并且给其赋初值。维数组,并且给其赋初值。字符型数组赋初值的方法和前面介绍的一般数组赋初值的方字符型数组赋初值的方法和前面介绍的一般数组赋初值的方法完全相同,法完全相同,“初值表初值表”中是逗号分隔的字符常量。中是逗号分隔的字符常量。3.4 数组与函数数组与函数 3.4.1 数组的定义与引用数组的定义与引
24、用4.字符串数组字符串数组第一种方式第一种方式是按单字符的方式的赋初值,在最后一个字符是是按单字符的方式的赋初值,在最后一个字符是结束标记。这样跟定义字符数组是完全相同,字符数组可以结束标记。这样跟定义字符数组是完全相同,字符数组可以当成字符串数组来使用,只是在最后一个字符是字符结束标当成字符串数组来使用,只是在最后一个字符是字符结束标记。记。第二种方式第二种方式是直接在初值表中写一个字符串常量。是直接在初值表中写一个字符串常量。例如:例如:char a3=1,2,0;/单个字符定义赋初值方式,结果单个字符定义赋初值方式,结果a0值为值为1,a1值为值为2,a2值为值为0。char a3=12
25、;/字符串定义赋初值方式,结果和上面字符串定义赋初值方式,结果和上面一样。一样。3.4 数组与函数数组与函数 3.4.2 函数定义与调用函数定义与调用1.函数的定义函数的定义有参函数的定义格式如下:有参函数的定义格式如下:存储类型说明符存储类型说明符 数据类型说明符数据类型说明符 函数名函数名(形式参数表形式参数表)形式参数说明序列;形式参数说明序列;数据定义语句序列;数据定义语句序列;执行语句序列;执行语句序列;无参函数的定义格式如下:无参函数的定义格式如下:存储类型说明符存储类型说明符 数据类型说明符数据类型说明符 函数名函数名()数据定义语句序列;数据定义语句序列;执行语句序列;执行语句
26、序列;3.4 数组与函数数组与函数 3.4.2 函数定义与调用函数定义与调用2.函数的调用函数的调用(1)调用函数的格式)调用函数的格式函数调用语句的格式按函数是否有返回值分为两种,具体格式如下:函数调用语句的格式按函数是否有返回值分为两种,具体格式如下:1)没有返回值的函数调用格式如下:)没有返回值的函数调用格式如下:函数名(实际参数表);函数名(实际参数表);这种调用格式是作为语句形式调用的,最后要有一个语句结束符号这种调用格式是作为语句形式调用的,最后要有一个语句结束符号“分号分号”。C 语言规定,有返回值的函数也可以用这种形式调用,语言规定,有返回值的函数也可以用这种形式调用,此时,返
27、回值将丢失。此时,返回值将丢失。2)有返回值的函数调用格式如下:)有返回值的函数调用格式如下:函数名(实际参数表)函数名(实际参数表)使用这种调用格式的结果是获得一个返回值,可以参加表达式的计使用这种调用格式的结果是获得一个返回值,可以参加表达式的计算。算。3.4 数组与函数数组与函数 3.4.2 函数定义与调用函数定义与调用2.函数的调用函数的调用(3)调用函数的说明)调用函数的说明3)如果被调的用户函数和主调函数不在同一个编译单位中,则在定义函)如果被调的用户函数和主调函数不在同一个编译单位中,则在定义函数的编译单位中用下列方式将该函数定义成外部函数:数的编译单位中用下列方式将该函数定义成
28、外部函数:extern 数据类型函数名数据类型函数名(形式参数表形式参数表);同时在主调函数的函数体中,或所在编译单位的开头将要调用的函数说明同时在主调函数的函数体中,或所在编译单位的开头将要调用的函数说明成成“外部函数外部函数”。说明语句的格式为:。说明语句的格式为:extern 数据类型数据类型 被调函数名被调函数名();3.5 指针指针 3.5.1 指针变量指针变量1.指针变量的定义和初始化指针变量的定义和初始化格式格式存储类型存储类型 数据类型数据类型*指针变量名指针变量名1=初值初值1,;功能功能定义指向定义指向“数据类型数据类型”变量或数组的若干个指针变量,同时给这些指针变量变量或
29、数组的若干个指针变量,同时给这些指针变量赋初值。这些指针变量具有确定的赋初值。这些指针变量具有确定的“存储类型存储类型”。3.5 指针指针 3.5.1 指针变量指针变量2.多级指针的定义和应用多级指针的定义和应用格式格式存储类型存储类型 数据类型关数据类型关*指针变量名指针变量名=初值初值,功能功能定义指向定义指向“数据类型数据类型”指针变量的二级指针变量,同时给二级指针变量赋初值。这些指针变量的二级指针变量,同时给二级指针变量赋初值。这些二级指针变量具有指定的二级指针变量具有指定的“存储类型存储类型”。3.5 指针指针 3.5.1 指针变量指针变量3.文件型指针的定义和使用文件型指针的定义和
30、使用文件型指针的定义方法如下:文件型指针的定义方法如下:FILE*文件型指针名,文件型指针名,*文件型指针名文件型指针名2,;其中的其中的“文件型指针名文件型指针名”是用户选取的标识符。是用户选取的标识符。由于由于“FILE”是在头文件是在头文件“stdio.h”中定义的,所中定义的,所以使用它的程序在开头应该把这个语句包含进去。以使用它的程序在开头应该把这个语句包含进去。3.5 指针指针 3.5.2 指针变量的引用方式指针变量的引用方式1.给指针变量赋值给指针变量赋值使用格式为:使用格式为:指针变量指针变量=表达式表达式。这个表达式必须是地址型表。这个表达式必须是地址型表达式。达式。2.直接
31、引用指针变量名直接引用指针变量名 3.通过指针变量来引用它所指向的变量通过指针变量来引用它所指向的变量使用格式为:使用格式为:*指针变量名指针变量名。在程序中。在程序中“*指针变量名指针变量名”代表它所代表它所指向的变量。注意这种引用方式要求指针变量必须有值。指向的变量。注意这种引用方式要求指针变量必须有值。3.5 指针指针 3.5.3指针变量的使用指针变量的使用1.指向变量的指针变量的使用指向变量的指针变量的使用2.指向一维数组的指针变量的使用指向一维数组的指针变量的使用3.指向一维数组的指针变量处理数组元素指向一维数组的指针变量处理数组元素4.指向一维数组的指针变量的运算指向一维数组的指针变量的运算5.关于使用指针法处理一维数组元素的下标越界问题关于使用指针法处理一维数组元素的下标越界问题6.指向字符串的指针变量的使用指向字符串的指针变量的使用7.指向字符串常量的指针变量的使用指向字符串常量的指针变量的使用8.指向存放字符串的字符数组的指针变量的使用指向存放字符串的字符数组的指针变量的使用9.指向二维数组的指针变量的使用指向二维数组的指针变量的使用
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。