C语言教学课件_第1页
C语言教学课件_第2页
C语言教学课件_第3页
C语言教学课件_第4页
C语言教学课件_第5页
已阅读5页,还剩286页未读 继续免费阅读

下载本文档

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

文档简介

1、1,C语言程序设计,2,教 学内 容,第一章 C语言概述 第二章 算法 第三章 数据类型、运算符与表达式 第四章 最简单的C程序设计 第五章 选择结构程序设计 第六章 循环控制 第七章 数组 第八章 函数 第九章 预处理命令 第十章 指针 第十一章 结构体 第十三章 文件,3,前 言,前 言,一、计算机语言,1、机器语言 2、汇编语言 3、高级语言,4、高级语言向机器语言的过渡,机器指令的集合,符号化的机器语言,通用自然的算法语言,4,前 言,二、程序与程序设计,完成某一功能的计算机 指令的有序集合,1、程序,2、程序设计,设计、编制、调试程序 的过程,5,3、程序设计的基本步骤,(1) 分析

2、问题,(2) 确定解题思路和算法,(3) 编制流程图,(4) 编写源程序,(5) 静态检查,(6) 上机调试,(7) 正式运行,前 言,6,本章内容 1.1 C语言发展史 1.2 C语言特点 1.3 简单C程序分析,第一章 C语言概述,返回,7,第一章 C语言概述,第一章 C语言概述,1.1 C语言发展史,1960 ALGOL60 (Algorithmic Language),1987 87 ANSI C 1990 ISO C,1972 C (取BCPL第二个字母),1970 B (取BCPL第一个字母),1978 标准C 1983 ANSI C,1967 BCPL (Basic Combin

3、ed,Programming Language),跳转,8,第一章 C语言概述,1.2 C语言特点,1、简练、自由、结构化 (32个关键字、9种控制语句),2、运算符丰富(附录)34种,3、数据结构丰富,4、可直接对硬件进行操作,5、目标程序质量高,6、可移植性好,9,第一章 C语言概述,1.3 简单C程序分析,例1.1 打印(显示)一串字符。,运行结果: This is an example.,/* example1.1 */ main( ) printf(“This is an example. n”); ,10,第一章 C语言概述,例1.2 已知角度值45, 求正弦值的2倍。,/*exa

4、mple 1.2*/ #include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); ,运行结果: Y=1.413650,11,第一章 C语言概述,例1.3 已知三角形三边 a, b, c, 求面积。,/*example 1.3*/ #include “math.h” main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, ,输入: 4,5,6 ,输出: P=7.500000 S=9.921567,12,第一章 C语言概述,max( int x

5、 , int y ) main( ) /*max number*/ int z ; int a , b , c ; if(xy) z=x ; scanf(“%d,%d”, ,例1.4 已知整数 a, b, 求其中的最大数。,13,第一章 C语言概述,C程序结构,1、C程序由函数构成,C程序=,一个主函数(main函数) 一个主函数+若干其他函数(子或库),Turbo C有300多个,跳转,3、语句书写自由,后带分号“;”,4、可用 /*/ 对C程序作注释,前一页,14,本章内容 2.1 算法的概念 2.4 算法的表示 2.5 结构化程序设计,第二章 算法,返回,15,第二章 算法,第二章 算法

6、,程序 = 数据结构 + 算法,程序=数据结构+算法+程序设计方法+语言工具和环境,数据结构:对数据的描述,算法:对操作的描述,#include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); ,16,例如: 1+2+3+100=5050 或 100+1+99+2+98+49+51+50= 100+49*100+50=5050,第二章 算法,2.1 算法的概念,算法:为解决一个问题而采取的方法和步骤。,17,第二章 算法,2.4 算法的表示(用流程图表示算法),起止框,处理框,判断框,输入

7、/出框,流程线,连接点,注释框,18,第二章 算法,例2.1 计算265的平方根,顺序结构,NS图,19,第二章 算法,例2.2 打印X的绝对值,分支结构,NS图,X=0,y n,打印x 打印 -x,20,第二章 算法,例2.3 计算 1到100的和,循环结构,ib 否则,判断 e3 的值, 其值非0执行语句3;否则,. 判断em 的值,其值非0执行语句m ;否则,执行语句n,85,第五章 逻辑运算和判断选取控制,例5.1 从键盘输入两个整型数,输出最大数。,main() int a ,b ; scanf(“%d,%d”, ,86,第五章 逻辑运算和判断选取控制,例5.1 从键盘输入两个整型数

8、,输出最大数。,main() int a ,b ; scanf(“%d,%d”, ,87,第五章 逻辑运算和判断选取控制,例5.2 输入两个整型数,按大小输出。,main() int a ,b ,temp ; scanf(“%d,%d”, ,88,第五章 逻辑运算和判断选取控制,例5.3 输入互不相等的三个数,按从小到大 顺序输出它们。,分析:设已知的三个数为a, b, c。 (1)可直接通过逻辑表达式和条件语句 设计程序。 (2)可通过条件语句和互换变量值设计 程序,即经过处理后使: abc,89,第五章 逻辑运算和判断选取控制,方法(1):,main( ) float a, b, c; s

9、canf(“%f %f %f ”, ,90,第五章 逻辑运算和判断选取控制,方法(2):,main( ) float a, b, c, t; scanf(“%f %f %f ”, ,91,例5.4 求一元二次方程 ax2+bx+c=0 的解,第五章 逻辑运算和判断选取控制,92,第五章 逻辑运算和判断选取控制,#include main( ) float a, b, c, d, x1, x2; scanf(“%f %f %f ”, ,93,第五章 逻辑运算和判断选取控制,例5.5某运输公司吨公里基本运费为p,根 据距离s的远近计费标准如下: s250km 没有折扣 250 s500 2% 折扣

10、 500 s1000 5% 折扣 1000 sy ? x : y ; printf(“max=%d”,z); 或 printf(“max=%d”,xy?x:y); 或 xy?printf (“%d”,x) : printf (“%d”,y);,举例:,(2)ab?a:b+1等价于ab?a:(b+1)而不是(ab?a:b)+1 (3)ab?a:cd?c:d等价于ab?a:(cd?c:d) (4)xy?1:5.6 表达式的值的类型取高的 (5)ch=(ch=A,102,第五章 逻辑运算和判断选取控制,5.4 switch 语句,103,第五章 逻辑运算和判断选取控制,三、break 语句,使流程跳

11、出switch结构, 终止switch语句的执行。,104,第五章 逻辑运算和判断选取控制,例5.7 用switch语句设计“例5.5运费程序”,跳转,s 1 d=0 1 s 2 d=0.2 2 s 4 d=0.05 4 s 8 d=0.08 8 s 12 d=0.1 12 s d=0.15,105,第五章 逻辑运算和判断选取控制,main( ) float p, w, s, d,f; int c; scanf(“%f”, case 4 :,case 5 : case 6 : case 7 : d=0.08; break; case 8 : case 9 : case 10: case 11:

12、 d=0.1; break; case 12: d=.15; break; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); ,106,第五章作业,第111页 5.3 、 5.5、 5.7,上机调试作业,第111-112页 5.6、 5.7,第五章 逻辑运算和判断选取控制,107,第五章 逻辑运算和判断选取控制,习题5.5 已知x,求分段函数值y,main() float x, y; scanf(“%f”, ,程序1:,108,第五章 逻辑运算和判断选取控制,main() float x, y; scanf(“%f”, ,程序2:,109,第五章 逻辑运算和判断选取

13、控制,习题5.6,分析:设百分制成绩为x, 成绩等级为y,110,第五章 逻辑运算和判断选取控制,习题5.10,分析:设坐标为(x, y), 高度为h 设: a=(x-2) + (y-2) 1 b=(x+2) + (y-2) 1 c=(x+2) + (y+2) 1 d=(x-2) + (y+2) 1,2,2,2,2,2,2,2,2,111,本章内容 6.1 概述 6.2 goto语句 6.3 while语句 6.4 do-while语句 6.5 for语句 6.6 循环的嵌套 6.7 几种循环的比较 6.8 break语句和continue语句,第六章 循环控制,返回,112,第六章 循环控制

14、,第六章 循环控制,C 循环控制,if - goto循环 (6.2) while循环 (6.3) do - while循环 (6.4) for循环 (6.5),6.1 概述,113,第六章 循环控制,6.2 goto语句及其构成的循环,一、goto语句,114,第六章 循环控制,二、用法,1、与if语句联合使用构成循环,2、用来实现从多重循环体内转出,L1: if(e) 循环体 goto L1; (当型循环),L2: 循环体 if(e) goto L2; (直到型循环),115,第六章 循环控制,例6.1 求 s=1+2+3+.+n 的值。,main( ) int i=1, sum=0, n;

15、 scanf(“%d”, ,main( ) int i=1, sum=0, n; scanf(“%d”, ,116,第六章 循环控制,6.3 while语句“当型”循环,一、语句格式,while(e)循环体,二、执行过程(先判断后执行),当表达式 e 值为非0时,执行循环体,然后重复执行while语句;当e 的值为0 时,结束循环,执行后继语句。,单语句或复合语句,117,第六章 循环控制,例6.2 求 s=1+2+3+.+n 的值(用while循环n=100)。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s=0, n; sc

16、anf(“%d”, ,118,第六章 循环控制,6.4 do-while语句“直到型”循环,一、语句格式,do 循环体 while(e);,二、执行过程(先执行后判断),先执行do后的循环体,然后判断表达式e 的值,若为非0,重复执行循环体,直到while中的表达式e 为0,结束循环。,单语句或复合语句,119,第六章 循环控制,例6.3 求 s=1+2+.+n 的值(用do-while循环n=100)。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s=0, n; scanf(“%d”, ,120,第六章 循环控制,6.5 fo

17、r语句及其构成的循环,二、执行过程,1、计算表达式1。 2、判断表达式2。 若非0,执行循环体,转3; 否则,结束循环,转4。 3、计算表达式3。转2。 4、执行for语句的下一条语句。,121,第六章 循环控制,三、说明,例6.4 求 s=1+2+.+n 的值(用for循环n=100)。,main( ) int i, s=0, n; scanf(“%d”, ,122,第六章 循环控制,2、for语句中的三个表达式均可省略 注意:(1) 分号不能省略。 (2) 应保证循环正确执行。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s

18、=0, n; scanf(“%d”, ,123,第六章 循环控制,例6.5 给一年级的小学生出10道100以内的加法练习题。,分析:1、出题 2、回答 3、判断对错,#include “stdlib.h” main( ) int i , x , y , z ; randomize(); for(i=1; i=10; i+) x=random(99); y=random(99); printf(“%d+%d=”, x , y ); scanf(“%d”, ,思考:1、做对几题 2、总成绩,#include “stdlib.h” main( ) int i ,x ,y ,z ; int count

19、=0 ,score=0 ; randomize(); for(i=1; i=3) (注:一行打印3个数字),main( ) long i=1, j=1, k ; int n ; printf(“%8ld%8ld”, i , j) ; for(n=3; n=30; n+) k=i+j ; printf(“%8ld”, k) ; if(n%3= =0) printf(“n”) ; i=j ; j=k ; ,125,第六章 循环控制,例6.7 求分数序列:1/2,2/3,3/5,5/8,8/13, 13/21, .的前20项之和。,main() int k ; float i=1 , j=2 , s

20、=0; for(k=1 ; k=20 ; k+) s=s+i/j ; j=i+j ; i=j-i ; printf(“sum=%10.6fn ”, s); ,126,第六章 循环控制,1、循环的嵌套概念对各种循环结构是一样的, 即某一循环的循环体内包含另一循环结构。,2、各种循环结构可以互相嵌套。,for-while嵌套 for( ; ; ) . while( ) . .,6.6 循环的嵌套多重循环,127,第六章 循环控制,1、各种循环结构可以互相替代,但不提倡使用 用goto构成的循环。,2、在while和do-while语句构成的循环体中必须 有使循环趋于结束的语句,如i+。,6.7 几

21、种循环的比较,3、在while和do-while语句构成的循环中,循环 变量的初始化必须在循环之前完成。,4、在while、do-while和for语句构成的循环中, 可以用break和continue跳出或结束本次循环,128,第六章 循环控制,6.8 break语句和continue语句,一、break语句,1、用来跳出switch结构。,2、用来跳出当前循环。,循 环,break;,129,第六章 循环控制,例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一项的值小于10-8为止。,#include “math.h” main() long

22、i=1; double pi=0; while(i*i=1e8) pi=pi+1.0/(i*i); i+; pi=sqrt(6.0*pi); printf(“ pi=%10.6fn ”, pi);,6.9程序举例,130,第六章 循环控制,例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一项的值小于10-8为止。,#include “math.h” main() long i ; double pi=0; for( i=1 ; i=1e8) break; pi=pi+1.0/(i*i); pi=sqrt(6.0*pi); printf(“ pi=%

23、10.6fn ”, pi) ; ,131,第六章 循环控制,例6. 9 打印100以内个位数为6,且能被3整除的数。,main() int i , j ; for(i=0;i=9;i+) j=i*10+6; if(j%3!=0) continue; printf(%d , j ); ,可以省略,132,第六章 循环控制,例6.10 写出下列程序的运行结果。,main() int i , j , a=0 ; for ( i=0 ; i2 ; i+ ) for ( j=0 ;j4 ;j+ ) if ( j%2 ) break ; a+ ; a+; printf (%dn,a) ; ,133,第六章

24、 循环控制,例6.11 打印99表。,1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54

25、7*9=63 8*9=72 9*9=81,134,第六章 循环控制,例6.11 打印99表。,main() int i , j ; for ( i=1 ; i=9 ; i+ ) for ( j=1 ; j=i ;j+ ) printf ( “%d*%d=%-3d”,j , i, i*j ) ; printf (n) ; ,135,第六章 循环控制,例6.12 百鸡百钱问题。 公鸡一只5元,母鸡一只3元,小鸡三只1元,用100元买一百只鸡,问公鸡、母鸡、小鸡各多少只?,设:公鸡x只、母鸡y只、小鸡z只 列等式: x+y+z=100 15*x+9*y+z=300,136,第六章 循环控制,例6.1

26、2 百鸡百钱问题。,main() int x , y , z ; for ( x=1 ; x=20 ; x+ ) for ( y=1 ; y=33 ; y+ ) for ( z=1 ; z1e-6); printf ( “%fn”,x1) ; ,141,第六章作业,上机调试作业,第129页 6.2,6.8, 6.14,第129页 6.2, 6.4 , 6.6, 6.8,第六章 循环控制,142,本章内容 7.1 一维数组 7.2 二维数组 7.3 字符数组,第七章 数组,返回,143,第七章 数组,第七章 数组,7.1 一维数组,144,第七章 数组,例: int a10; float b5;

27、 定义一维整型数组 a和实型数组b a数组中的元素是:a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; b数组中的元素是: b0, b1, b2, b3, b4,145,第七章 数组,例7.1 求 s=a1+a2+a10,main( ) int i; float s=0, a10; for(i=0; i10; i+) scanf(“%f ”, ,146,第七章 数组,四、一维数组的初始化,1、在定义数组时,给数组元素赋初值,例: int a6=1,2,3,4,5,6;,3、未赋初值的数组,各元素值不确定。,4、数组的大小由初始化的数据个数决定 。 例: int a

28、 =1,2,3;,5、数组中全部元素初始化为0 。 例: int a6=0;,147,第七章 数组,例7.2 求Fibonacci数列的前30项。(一行三个),main( ) long f30=1,1; int i; for(i=2; i30; i+) fi=fi-1+fi-2; for(i=0; i30; i+) if(i%3=0) printf(“n”) ; printf(“%8ld”, fi) ; ,148,第七章 数组,例7.3 已知一组数(n个),找出其中最大者。,main( ) int i, n ; float a20, max; scanf(“%d”, ,149,第七章 数组,例

29、7.3 已知一组数(n个),找出其中最大者(及其位置)。,main( ) int i, n, position; float a20, max; scanf(“%d”, ,150,第七章 数组,例7.4 对任意10个数按从大到小排序。(选择法),main( ) float a10 , t ; int i , j , p ; for(i=0; i10; i+) scanf(“%f ”, ,151,第七章 数组,例7.4 对任意10个数按从大到小排序。(交换法),main( ) float a10, t; int i, j; for(i=0; ij,ij,157,第七章 数组,main( ) in

30、t y1010, i, j; for(i=0; i10; i+) yi0=1; yii=1; for(i=2; i10; i+) for(j=1; j=i-1; j+) yij=yi-1j+yi-1j-1; for(i=0; i10; i+) for(j=0; j=i; j+) printf(“%5d”, yij); printf(“n”); ,158,第七章 数组,main( ) int y1111, i, j; for(i=1; i=10; i+) yi1=1; yii=1; for(i=3; i=10; i+) for(j=2; j=i-1; j+) yij=yi-1j+yi-1j-1;

31、 for(i=1; i=10; i+) for(j=1; j0) strcpy(string,str2); puts(string); ,166,第七章作业,上机调试作业,7.6, 7.10, 7.13,第153页 7.3, 7.4, 7.5, 7.13,第七章 数组,167,本章内容 8.1 概述 8.2 函数的定义 8.3 函数的调用 8.4 参数及函数值 8.5 函数的嵌套调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别,第八章 函数,返回,168,第八章 函数,第八章 函数,8.1 概述,main,d,e,f,g,h,i,j,k,l,m,a,b,c,1

32、69,第八章 函数,函数,库函数 自定义函数,无参函数 有参函数,170,第八章 函数,void print( ) printf(“*n”) ; main( ) int i , j ; for ( i=1 ; iy?x:y); main( ) float a, b, c, m; scanf(“%f, %f, %f ”, ,例8.5 求3个数中的最大数,183,第八章 函数,8.5 函数的嵌套调用,概念: 在调用一个函数的过程中, 又调用另一个函数,注: C语言不允许嵌套定义函数,main函数 a函数 b函数,调用a函数,结束,调用b函数,184,第八章 函数,8.7 数组作为函数参数,一、数组

33、元素作函数实参 与变量同(值传递),例: m=max ( a5 , a6 );,185,第八章 函数,#include “math.h” float area(float a, float b, float c) float p, s; p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); return(s); ,例8.6 已知10个三角形的三边长,求它们的面积。,186,第八章 函数,main( ) float a10, b10, c10, s10 ; int i; for(i=0; i10; i+) scanf(“%f%f%f”, ,例8.6 已知10个三角形的

34、三边长,求它们的面积。,187,第八章 函数,int total(char word ) int count=0 , i=0 ; while(wordi) if (wordi= )count+; i+; return(count); ,例8.7 编写一个函数,求一段文字中包含空格的个数。,二、数组名作函数参数,188,第八章 函数,main( ) char string80; int space; gets(string); space=total( string); printf(“Space number:%d”,space) ; ,例8.7 编写一个函数,求一段文字中包含空格的个数。,1

35、89,第八章 函数,void sort ( float a , int n ) int i, j , k ; float t; for(i=0; iaj) k=j; t=ai; ai=ak; ak=t; ,例8.8 用选择法将n个数按从小到大排序。,190,第八章 函数,main( ) int i,n; float a100; scanf(“%d”, ,例8.8 用选择法将n个数按从小到大排序。,191,第八章 函数,二、数组名作函数参数,1、实参、形参应同为数组名(或数组指针),2、实参、形参应同类型,3、实参、形参数组体积可不相同,4、在有些情况下形参数组可不指定大小, 但不允许出现可调数

36、组 如: float f ( int n , float a ) 不允许写成: float f ( int n , float a n ) (),5、数组参数的传递按“地址传递”,192,第八章 函数,8.8 、8.9变量的作用域和存储方式,变量分类,按生存期,按作用域,193,第八章 函数,局部变量函数内部定义的变量 (包括形参),全局变量函数之外定义的变量,作用域:本函数内,作用域:定义处以下的函数,8.8 局部变量和全局变量,194,第八章 函数,例8.9 局部变量,float f1( int a ) int i , j ; ,main() int m , n ; ,char f2( i

37、nt x , int y) int i , j ; int k ; i=k*k ; ,说明: 1、m,n只在main 中有效。 2、不同函数中的同 名变量互不干扰。 3、形参是局部变量。 4、复合语句中定义 的变量仅在中。,195,第八章 函数,例8.10 全局变量,float f1( int a ) int i , j ; ,main() int m , n ; ,char f2( int x , int y) int i , j ; ,说明: 1、增加了函数间 数据联系渠道。 2、尽量少用全局变 量。(占用空间、 函数通用性低、 程序清晰性低) 3、局变屏蔽外变。,char c1,c2;,

38、int p=1,q=5;,196,第八章 函数,例8.11 求10个学生的平均分,最高分和最低分。(用函数实现),float Max=0 ,Min=0 ; float average( float array, int n ) int i; float sum=array0; Max=Min=array0; for( i=1 ; iMax)Max=arrayi; else if(arrayiMin)Min=arrayi; sum=sum+arrayi; return(sum/n) ; ,10可有可无,197,第八章 函数,例8.11 求10个学生的平均分,最高分和最低分。用函数实现。,main

39、() int i; float aver , score10; for( i=0 ; ib?a:b); main() int a=8; printf(“%d”,max(a,b); ,199,第八章 函数,1、用户存储区,程序区,静态存储区,动态存储区,2、静态存储方式 程序运行期间分配固定的存储空间,3、动态存储方式 程序运行期间动态分配存储空间,8.9变量的存储类别,200,第八章 函数,一、局部变量的存储方式,局部变量,201,第八章 函数,说明:,1、局部静态变量在编译时赋初值, 自动变量赋初值在函数调用时进行。,3、局部静态变量在函数调用结束后保留 其值。,2、局部静态变量只在其被定义

40、的函数 内有效。,202,第八章 函数,int fac(int n) main( ) static int f=1; int i; f=f*n; for(i=1; i形参的数据传递;return语句。 2、全局变量。 3、形参为指针。 4、函数参数(形参或实参)为数组名或指针,跳转,228,第十章 指针,void fun(int a , int b , int *c , int *d ) *c=a+b ; *d=a-b ; main( ) int x , y , z , w ; scanf(“%d,%d”, ,例10.4 输入a和b两个整数,求他们的和和差。,229,第十章 指针,10.3 数

41、组的指针和指向数组的指针变量,数组的指针: 数组首地址、 数组第一个元素的地址(指针) 注意:数组名代表数组首地址(是常量),数组元素的指针: 数组元素的地址(首字节地址),230,第十章 指针,一、指向数组元素的指针变量,1、定义与一般指针变量一致 例: int a10, *p;,2、赋值将数组元素的地址赋给指针变量 (1)利用赋值语句 p=,231,第十章 指针,二、通过指针引用数组元素,1、指向数组的指针变量与数组元素的对应 若指针变量 p=) 若:p=) 则:*(p+i)=*(a+i)=ai=pi,232,第十章 指针,main( ) int a10, i; for(i=0; i10;

42、 i+) scanf(“%d”, ,例10.5 数组的输入输出 (1)下标法,233,第十章 指针,main( ) int a10, i; for(i=0; i10; i+) scanf(“%d”, a+i); /*此处不能用a+*/ printf(“n”); for(i=0; i10; i+) printf(“%d”, *(a+i); ,(2)按数组名计算地址,234,第十章 指针,main( ) int a10, *p, i; p=a; for(i=0; i10; i+) scanf(“%d”, p+); for(p=a; pa+10; p+) printf(“%d”, *p); ,(3)

43、指针变量法,235,第十章 指针,main() int i , j , n; float a20 , t ,*p=a; scanf(“%d”, ,例10.6 用指针方法对已知的n个数(n=20)按从小到大的顺序排序。,236,第十章 指针,三、数组名作为函数的参数,实参数组,形参数组,按地址结合,实参数组名,形参数组名,实参数组 首地址,形参数组 首地址,按值传递,237,第十章 指针,例8.7 用选择法将n个数按从小到大排序,1、实参与形参都是数组名(第八章),void sort ( float a , int n ) int i, j , k ; float t; for(i=0; iaj

44、) k=j; t=ai; ai=ak; ak=t; ,238,第十章 指针,main( ) int i; float a10; for(i=0; i10; i+) scanf(“%f”, ,239,第十章 指针,主函数不变,sort 函数变为:,void sort(float * p, int n) int i, j,k; float t; for(i=0; i *(p+j) )k=j; t= *(p+i); *(p+i)=*(p+j);*(p+j)=t; ,2、实参为数组名、形参为指针变量,240,第十章 指针,main( ) int i; float a10 , *p=a ; for(i=0; i10; i+) scanf(“%f”, p+ ); p=a; sort(p, 10); for(i=0; i10; i+) printf(“%f, ”, *p+ ); ,sort 函数不变、主函数变为:,3、实参为指针变量、形参为数组名,241,第十章 指针,1、实参与形参都是数组名(第八章),2、实参为数组名、形参为指针变量,3、实参为指针变量、形参为数组名,4、实参、形参都是指针变量,组合2的

温馨提示

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

评论

0/150

提交评论