承办单位教科办计算机中心课件

上传人:n85ho7****4h85bh 文档编号:243115256 上传时间:2024-09-16 格式:PPT 页数:213 大小:1.87MB
返回 下载 相关 举报
承办单位教科办计算机中心课件_第1页
第1页 / 共213页
承办单位教科办计算机中心课件_第2页
第2页 / 共213页
承办单位教科办计算机中心课件_第3页
第3页 / 共213页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,承办单位:教科办、计算机中心,C,语言二级辅导,主讲教师:软件工程系 杨富琴,欢迎和感谢大家的踊跃参加!,努力辅导,及格,or,优秀!,一起加油吧!,时间安排,日期,星期,授课时间,10.10,星期一,17.30,20.45,10.17,星期一,17.30,20.45,10.24,星期一,17.30,20.45,10.31,星期一,17.30,20.45,11.5,周六,13.3016.20,答疑:每周,五,15.00,17.00,,机房,内容安排,基本数据类型及其基本运算:,输入和数出,选择结构:,*,循环结构,:,设计、阅读(素数、最大公约数、级数),*,数组:设计、阅读、填充 、改错(排序、查找),*,函数:设计、阅读、填充 、改错,*,指针:阅读、简答题,*,结构体:单链表建立、插入、删除、输出。,填充,*,文件,:,建立和使用,*,讲课思路,通过例题,说明概念和应用,重在,基本知识,,解析,二级考题,编辑,编译,有错,?,连接,执行,结果,正确,?,结束,源程序,f.c,目标程序,f.,obj,库函数,和其它,目标程序,可执行,目标程序,f.exe,开始,正确,不正确,有,无,C,程序的上机调试步骤,F9,ctrl+f9,alt+f5,f10,1. 基本数据类型及其本运算,8,分,1.1,数据类型,数据类型,基本类型,*,构造类型,单精度型,双精度型,指针*,枚举,数组*,结构体*,共用体,整型,字符型,实型,(,浮点型,),1.2,标识符、常量与变量,1.2.1,标识符,概念:,用来对常量、变量、及用户自定义函数的,名称,进行标识的符号,.,定义规则,:以,字母,(az,AZ),或,下划线,_,开头,其后可跟字母、数字或下划线,_,三种字符、长度不超过,32,的字符串。,例如,: A,X2,MAX,stu,_list,_day1,;,3a,大、小写字母表示不同意义,。,不能与,C,关键字同名。,关键字:被,C,语言使用的字。如:,int,while,1.2.2,常量,1.,整型常量,:,三种形式,十进制整数,:,以,非,0,开头的数,.,如,:456,-789,0,。,八进制整数,:,以数字,0,打头的数,.,如:,06,,,0345,,,-027,。,十六进制整数,:以数字,0,后跟,x,(,或,X),打头的数。,如:,0x132,,,-0x15f,,,0X67,例,1,:修改,2002 1.6,设,main(),int,x1,x2,x3,x4;,x1=12,x2=69;,x3=012|5;,x4=0x12,Printf,(“%d,%d,%o,%x”,x1,x2,x3,x4);,4,(1100,&0111=0100),15,(00110,01001=1111),15,(001010,|000101=1111),7,(00010010,&,011,|,101=111),4,15,17,7,长整数,长整数,:用以扩大整数的取值范围。,表示方法,:在整数后面加一个,L,或,l,。,例如:,50l -,十进制长整数,050L-,八进制长整数,0x12l-,十六进制长整数,2.,实型常量,两种方式表示,:,十进制形式:,如:,87.45 , - 87.0, 87. , 0.87, .87 , 0.0(,必须有小数点,),指数形式,:,由正负号、整数部分、小数点、小数部分和字母,E,(,e,)后带或不带正负号的,整数,组成。,E,之前必须有数字,.(,表示太大或太小的数,),如,10,-5,0.00001 ,1e-5,(精度控制),3.,字符常量,如,: a,F,8;,字符常量具有数值,其值就是该字符的,ASCII,代码值,. a:,97,,,A:,65,32,数字字符和数字的,关系,:,8,48,+8 =0+8,转义字符,:p13,1.Print(“%s”,”,wang,isnot a studentn”);,2.Print(“%s”,”,x41,is,”,A,”,n”);,3.Print(“%s”,”,abc,n,efg,0,xyzn”);,1.Wang isnot a student,2.A is A,3.,abc,efg,(%S:,遇,0,输出结束,),4.,字符串常量,字符串常量在内存中存储时,自动在尾部追加一个,0,字符,以便系统据此,判断字符串是否结束,.,如,:“,abc,” 9798 99 0,字符串长度测试,:,sizeof,(“,abc,”);,strlen,(“,abc,”);,长度为,n,的字符串常量,在内存占,n+1,个字节,4,3(,不包含,0),测试存储空间长度函数,sizeof,(,int,);,5.,符号常量,#,define,R 5.1789,#define X 10,#define Y 20,#define Z X*Y,宏定义,有参和无参,举例,:#define,F,“r=%fn area=%.2fn”,#define,PI 3.14159,#define S(R) PI*R*R,#define,N,printf,(“n”),Main() float a,area;,a=3.6;b=1.4;,area=S(a);,N,;,printf,(,F,area);,运行结果,r=3.600000,area=40.715038,S(a+b);,3.14*a*a(),PI*(R)*(R),无参宏定义,宏展开,3.14159*a+b*a+b (,),有参宏定义,1.2.3,变量,C,中的变量有,普通变量,和,指针变量,.,普通变量,:,用来存放普通的数据变量,包括整型、实型和字符型,.,指针变量,:,用来存放地址的变量,。,都必须“,先定义,后使用,”,.,掌握数据类型的标识符、长度、范围和存放格式。,见,P12,表,2.3,,表,2.4,内存中以,补码形式,存放。,类型及其特性,类型标识符,长度,数据范围,存放格式,符号位,数据位,int,2,-32768,32767,(2,15,-1),1,15,short,2,-32768,32767,1,15,long,4,-21474836487,1,31,unsigned,int,2,0,65535,0,16,unsigned short,2,065535,0,16,unsigned long,4,0,4294967295,0,32,float(7,位,),4,3.4e-38 3.4e+38,1+23,1+7,double,(,15,位有效数字),8,1.7e-308 1.7e+308,1+48,1+14,例,2001_1.4,Main(),int,a= -1;,printf,(“%d,%u,%x,%on”,a,a,a,a);,运行结果,:,-1, 65535,ffff, 177777,-1,原码,:,10000000 00000001,-1,补码,:,原码取反,1,11111111 11111111,改为,:a=-2,输出如何,?,运行结果,2:,-2, 65534,fffe, 177776,例如,Main(),float,x,y;,x=111111.111;,y=222222.222;,printf,(“%fn”,x+y);,运行结果,:,333333.328125,可见,x,y,只有前,7,位为有效数字,后两位小数不起作用,.,若改为:,double x,y,运行结果,:,333333.333000,3.,字符,变量,一个字符变量只能存放一个字符,标识符,: char ,占,1,个字节,内存中存放的是该字符二进制形式的,ASCII,代码值,.,Char,型和,int,型数据可以互换,.,例:,Main(),int,c1;,char c2;,c1=a;,c2=98;,printf,(“%c %cn”,c1,c2);,printf,(“%d %dn”,c1,c2);,运行结果,:,a b,97 98,4 .,指针变量,存放变量的地址。例:,2003,二级,1.4,执行下列程序后,b,和,c,的值各为多少,?,main( ),int,b,c,*a;,a=,&,b ;,*,a=5 ;,c=(*a)+;,printf,(“ %d %dn”, b,c);,6 5,b,c,a 1000,1000,5,a,5,6,1.3,运算符和表达式,根据运算符在表达式中的作用,分类,:,算术运算,符:,+,、,-,、*、,/,、,%,、,+,、,- -,赋值运算符:,= += /=,位运算符:, & | ,关系运算,符:, = = 0,)个学生,最后一个班若不足,k,人也单独编成一个班。写出条件表达式表示编班个数。,例,1,:,n%k= =0,?,n/k,:,n/k+1,例,3,:,0,100), x=0&xx=0,例,4,:,写一个布尔表达式,当整数,n,的值大于零、且个位数为,2,或,7,时,该布尔表达式的值为真,.,n0 &( n%10= =2 or n%10= =7),3.,逻辑运算:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,.,1.a&b&c,只有,a,为真时,才需要判别,b,的值,只有,a,和,b,都为真时,才需要判别,c,的值,.,只要,a,为假,就不必判别,b,和,c,的值,.,若,a,为真, b,为假,不判别,c.,2. A|b|c,只要,a,为真,就不必判断,b,和,c;,只有,a,为假,才需要判别,b, a,和,b,都为假才判别,c.,如,:a=1,b=2,c=3,d=4,m,和,n,的原值是,1,执行,:,(,m=ab)&(n=cd),后,m=? n=?,0,1,例,2001_1.3,求运行结果,Main(),Int,a=0,b=0,c=0,x;,x,=,(a=50),printf,(“%d,%d,%d,%dn”,x,a,b,c); ,运行结果,:,0,50,0,0,4.,关系运算 例,2003 1.1,Int,a=5,b=4,c=3,r1,r2;,执行,r1=abc;,r2=ab,r1=?,r2=?,0,1,自左至右,右结合性,5.,条件运算练习题,设,int,a=1,b=3,c=4,d=8;,表达式,(ab?,c b ? a : c d ? c : d,等同于:,a b ? a : ( c d ? c : d ),例,2,:,main( ) /*,求程序执行结果,94,年等级考,*,/ l3_2.c ,int,a =1 , b =2 , c = 3 ;,a+ ? b+ :,c+,; /,没算,c +,printf,( “ n a = %d , b = %d , c = %d ” , a , b , c ) ;, / CRT : a = 2 , b = 3 ,c = 3,例,3,:,main ( ) / *,执行结果?,95,年等级考,*,/ l3_3.c ,int,i = 6 , j = 6 , k = 3 ;,k += i j ?,i+,: - j ; /,没算,i +,k+= 5 ;,printf,( “ i=%d , j = %d , k = %d ” , i , j , k );, / CRT : i = 6 , j = 5 , k = 8,例,4,main(),int,a=1,b=2,c=3;,a+=b+=c;,printf,(“%dn”,ab?a+:b+);,a=3;b=c=4;,printf,(“%dn”,c=b,5,9,1,例,5,:,设有变量定义,int,a=5,b=4,c=3,d=2;,试写出计算表达式,(-a=b+)?c-:+d,后,a,b,c,d,的值,.,a=4,b=5,c=2,d=2; 99,年,1.1,6.,逗号运算符和逗号表达式,例如:,int,test ( ),int,x = 0 ;,static,int,y = 2 ;,y + = +x ;,return x+y ;,main( ),printf,( “%dn” , (,test( ) , test ( ),) ) ;,逗号表达式,:,表达式,1,表达式,2,表达式,n,求解过程,:,先求表达式,1,再求表达式,2.,最后求表达式,n.,逗号表达式的值,:,表达式,n,的值,.,例如:,int,j=5;,a=(a=j+1,a+2,a+3);,5,结果:,a=9,若去掉括号,a=6,7,位运算符和位表达式,& | ,位运算符的优先级, & |,高,低,例,1,:,2002 1.6,计算,设,int,x,x=12&7=?,x=69=?,x=012|5=?,x=7&3|5=?,4,(1100,&0111=0100),15,(00110,01001=1111),15,(001010,|000101=1111),7,(111,&,011,|,101=111),例,2,:,写出,printf,(“n%dt%d”,(52),(5,的输出结果,解,:,00000101 00000101,00000010,&,00000010,00000111 00000000,结果,7 0,2001,年等级考,输入两个整数,存入,a,、,b,变量中,并由,a,、,b,两个数生成新的数,c,其,生成规则,是:将,a,的低字节作为,c,的高字节,将,b,的低字节作为,c,的低字节,并显示出来。,将整数,b,的低字节取出,高字节置零,. b&0x00ff,将整数,a,的低字节取出移至高字节,低字节再置零,. (b&0x00ff)8,两者的结果进行合并,. b&0x00ff | (a&0377)8,#include ,main( ),int,a,b,c;,printf,(,“,Input a,b:,”,);,scanf,(,“,%d%d,”,c=(a&0x00ff)8,|,(b,printf,(,“,c=%d,”,c);,例,3,&,运算可取一个数,中某些指定位,2 输入和数出,2.1,输出函数,printf,( ),1.,格式,:,printf,( “,输出格式”,输出表列),;,如:,printf,( “ a = %d , b = %f n ” , a , 3.14*a*a ) ;,(,a,)输出格式:,由格式说明、按原样输出的字符和转义字符组成。,%d,以十进整数的实际长度输出。,%x,以,16,进制无符号形式输出整数。,%o,以八进制无符号形式输出整数。,%u,以十进制无符号形式输出整数。,%c,输出单一字符。,%s,输出一个字符串。,%f,以小数形式输出实数。整数部分全部输出,小数,部分输出,6,位小数,。,%e,以指数形式输出实数。,指数部分,5,位,(如,e+002,),尾数的小数点前只能有,1,位非,0,数字,小数为,6,位,。,%g,选用,%f,和,%e,中输出宽度较短的一种格式,不输,出无意义的,0,。,p28,2.,Printf,(),的,输出,格式选择项,例:,%5d , %-7c , %8.2f , %ld,放在,%,和格式字符之间,表示附加要求,。,、,:号时,结果,右对齐,,,号时,,,结果,左对齐,。,0,:,输出数值时,,有,0,时,不用位置填,0,。例:,%05d,m . n,: m,是实数或字符串的总长度,,n,是小数部分或实际,字符的长度。例:,%-5.3s , %8.3f,注,如实际位数超过,m,,则按实际长度输出。,l,:,用于输出长整型或无符号长整型。,l,:,长双精度型。,(e,f,g),h,:,用于输出短整型或无符号短整型。,#:,用于,o,和,x,格式输出,0,或,0x,;,3.,Printf,(),使用注意几点,1,、,变量定义为,long,输出时必须,%ld,,否则仅将后,16,位输出。,2,、如要输出,%,则在格式字符串中应输入,%,。,3,、,printf,(“,%d,”,3.5),输出不是,3,而是,0,!,取低,2,个字节输出。,Print(“%f”,3.5),输出,3.500000,例,1,:,main(),printf,( “ %,5s,%6s,%5.2s,n”,“,abc,” , “def” , “,abcde,” ) ; ,结果,:,abc,def ,ab,4,、,printf,( ),处理表项时遵循 “,自右向左,” 的原则。不是“自左向右”,例,2,:,main ( ) ,int,a =4 ;,printf,( “ %d , %d ” , a = a + 5 , a ) ; /,显示,9, 4,不是,9, 9,printf,( “ a = %d ” , a ) ; /,显示,a = 9,printf,( “ %d , %d ” , a , a = a + 5 ) ; /,显示,14 ,14,不是,9,14,printf,( “ a = %d ” , a ) ; /,显示,14,2.2,输入函数,scanf,(),使用形式,:,scanf,(“,输入格式”,地址,表列,),;,输入格式,:,由,格式说明,和,按原样输入的字符,二部分组成。从键盘输入 的数据 按照,格式说明,转换为指定的格式,存放到内存,中。,(,%d %x %o %f %c %s,),地址表列,:,变量的地址或字符串首地址组成,.,例,1:,Scanf,(“%d%d”,Scanf,(“%d,%d”,Scanf,(“a=%d,b=%d”,输入,:12 234,12,234,a=12,b=234 ,p31,2.,Scanf,(),使用注意点,:,1,、输入格式字符串中的,非格式字符,,输入时必须,原样输入,2,、在用,%c,格式输入字符时,空格、转义字符都作为有效字符输入,3,、,实数,输入时不能规定,精度,。,4,、,格式字符,不能有,n,。,5,、,变量前,勿忘,&,。,6,、,*,:指定输入项在读入后,不赋给,相应的,变量,。,(,跳过,),例,1,:,scanf,( “%c%c%c” , ,x,y,z,结果 ,x,赋给,a , ,空格 赋给,b , y,赋给,c,。,例,2,:,scanf,( “ %7.2f ” , ,是不允许的,。,例,3,:,scanf,( “ %,2d,%,4d,%,2d,” , ,19900125,则,a = 19 ; b = 9001 ; c = 25,例,4,:,scanf,( “ %,2d,%,*3d,%,2d,” , ,12,345,67,则,x =12 ; y = 67,例,2003,二级,1.5,main( ),int,a; float f; char *c;,scanf,(“%4d%f,%s,”,printf,(“a=%d, f=%.0f,c=%sn”,a,f,c); ,键入,200015.0 p4 is GOOD!,执行后的输出结果。,a=2000,b=15,c=p4,在输入数据时,遇以下情况时该数据认为,结束,:,遇空格,或回车或跳格键;,遇宽度结束;,遇非法输入;,3 选择结构程序设计,3.,选择结构,关系运算、逻辑运算、条件运算:,P38,表,4.1,表,4.2,表,4.3,注意事项:,p40,If,的三种形式:,格式、执行过程,Switch,语句:格式、执行过程,p46,X,当,(x0); if(x0) y=x,例,1:,用,if,和,switch,语句实现下面运算:,Y=,X,当,(x0),if,(x0) y=x;,x*x,当,0,x,else,y=x*x,x*x,当,0,x1,if,(x=4),x*x-5,当,1,x2,else,if(x1) y=x*x,x*x-2*x-1,当,2,x3,else,if(x2) ,x*x+6*x-18,当,3,x4,else,if(xc&c+ba&b+ca,三角形,类型,:,等边,:a=b&b=c,等腰,: a=b| b=c|a=c,直角,:a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a,面积,公式,:,s=(a+b+c)/2,area=,sqrt,(s*(s-s)*(s-b)*(s-c),程序结构:,If(),计算面积,if(),else if(),else,else,例,4.9p48,Main(),int,I,j,a,b,c ;,scanf,(“%d,%d,%d”,;,if(,) j=0;,if(a*a+b*b=c*c|a*a+c*c=b*b|c*c +b*b= a*a),j=1;,switch(,),case 0:,printf,(“,不能构成三角形,!n”) ;,;,case 1:,printf,(“,能构成直角,!n”) ;,case 2:,printf,(“,三角形,!n”);,例,2.,这是一个检验输入的三条边值能否构成三角形的程序,.(,完善程序,),!(,a+bc&b+ca&a+cb),j,break,J=2,4 循环结构程序设计,循环结构,C,语言有三种循环结构:,(1) while,结构,(2) do while,结构,(3) for,结构,goto,和,if,语句构成循环,.(,不提倡应用,),执行过程:,多重循环,阅读程序,main(),int,a33,i,j;,for ( i=0; i3; i+),for,( j=0; j3; j+),aij= i= = j ? 0: i+j ;,for ( i=0; i3; i+), for ( j=0; j3; j+),printf,( “%4d”,a i j ) ;,printf,( “n” ) ;,0 1 2,1 0 3,2 3 0,阅读程序,(99-2-2),void,p,(,int,k),int,i,m;,for(m=2;m=k;m+), for(i=2; i=m ; i+),if(!(,m%i,) break;,if(i=m),printf,(%4d,m);,printf,(n);,main(),p,(15);,2 3 5 7 11 13,求,15,的素数,判断素数的方法,阅读程序,(99-2-1),void,s(,int,a,int,n),int,i,j,t;,for(i=0;i=0&,t,aj,;j-),aj+1=aj;,aj+1=t; ,main(),int,i,b6=24,12,14,32,22,34;,S(,b,6);,for ( i=0; i6; i+),printf,(“%4d”,bj);,printf,(“n”);,12 14 22 24 32 34,右移,比较趟数,寻找,t,的排序位置,找到位置并置数,t,2004.1.3,main( ), char s=“2473”,c,i;,for(i=0 ; c=si ; i+),switch(,(c-0,),case 2:,case 3:,putchar,(c+4);,continu,;,case 4:,putchar,(c+4);,break,;,case,5,:,putchar,(c+3);,default:,putchar,(c+2);,putchar,(n);,68,9,7,对,switch,对,for,本次循环结束,2003.1.6,main( ),int,c1=0,c2=0,c3=0,c4=0;,char *p=“12395632123378”;,while,(*p),switch( *p ),case 1: c1+; break;,case 2: c2+;,case 3: c3+; break;,default: c4+;,p+;,printf,(“c1=%d c2=%d c3=%d c4=%dn ”, c1,c2,c3,c4) ;,c1=2,c2=3,c3=7,c4=5,例,1,用下列公式求,的近似值,直到最后一项的绝对值小于,10,-4,为止。,sum=sum+p,;,p=,1.0,/i*s;,i=i+2,;,/*,加,2,得到下一个奇数*,/,s=-s;,/*,相邻项符号取反*,/,.,循环体,控制结束,:,fabs,(,1.0/i,),=,1e-4,);,printf,(,“,pi=%fn,”,sum*4,);,运行结果:,pi=3.141397,a=b,b=c,c=a%b,例,2:,求两整数的最大公约数和最小公倍数。,1.,求最大公约数算法:,若有两整数,a,b,且,ab,时:,a,除以,b,取余,得,c,若,c=0,则,b,为两数的最大公约数。,若,c0,则,a=b,b=c,,回去执行。,2.,求最小公倍数算法:,最小公倍数,=,两数乘积除以最大公约数。,例,:15 , 12,15%12=3,12%3=0,最大公约数,:3,例如,:,M=15,n=6,15%6=3,6%3=0,(15*6)/3=30,main( ),int,m,n,a,b,t,c;,printf,(“Input two integer numbers: n);,scanf,(“%d%d”,m=a;,n=b;,if(ab), t=a;,a=b;,b=t; ,c=a%b;,while,(,c!=0,), a=b;,b=c;,c=a%b;,printf,(“ The largest,common divisor:,%dn”,b,);,printf,(“The least common multiple: %dn”,m*n/b,);,a,大,b,小,程序,例,3:,打印出以下图案,:,*,* * *,* * * * *,* * * * * * *,* * * * *,* * *,*,算法分析:(前,4,行),行号 *的个数 *的起始位置,1 1 3,2 3 2,3 5 1,4 7 0,i,2i-1 4-i,1.,确定起始位置,(,打几个空格),:,2.,打印*的个数,:,For(j=1; j=4-i; j+),printf,(“ ”);,For(k=1;k=2i-1;k+),printf,(“*”);,printf,(“n”);,main( ),int,i,j,k ;,for(i=1;i=4;i+),for(j=1;j=,4-i,; j+),printf,(“ ”);,for(k=1;k=,2*i-1,;k+),printf,(“* ”);,printf,(“n ”); ,程序,for(i=1;i=3;i+),for(j=1;j=,i,; j+),printf,(“ ”);,for(k=1;k=,7-2*i,;k+),printf,(“* ”);,printf,(“n ”); ,前,4,行程序,后,3,行程序,程序设计,1.,使用控制语句,计算下列公式的近似值,(do while),s=1-x,2,/2*1!+x,4,/4*3!-x,6,/6*5!+,(,某项值,=1;i+),for(n=1;n=,4-i,; n+),printf,(“ ”);,for(n=1;n=,2*i-1,; n+),printf,(“%c”,a);,printf,(“n ”);,a+;,程序,2,main( ), char,a,;,int,n ;,for(a=A;a=D;a+),printf,(“n ”); for(n=1;n=,a-A,; n+),printf,(“ ”);,for(n=1;n=,2*(D-a)+1,; n+),printf,(“%c”,a);,控制行,控制空格,控制打印符号,2003.4.1,求,m,的素因子,Main(),int,m,i,n;,for(m=4;m=10000;m+),n=m;,For(i=2;i=m;i+),while(n%i=0,) ,printf,(“%d”,i);,n=n/i,;,while(n%i=0&prime(i),Prime(,int,x),int,i;,for(i=2;x%i!=0;i+) ; return,x= =i,? 1:0;,2003.4.2,打印,A B C D E,Main(),int,i,j,t;,Char a5=“ABCDE”;,FOR(i=0;i5;i+), For(j=i; j4),printf,(“%c”,aj-5),;,else,printf,(“%c”,aj);,printf,(“n”; ,B C D E A,C D E A B,D E A B C,E A B C D,5 数组,1.,数组说明,:p69,数组中第一个元素的下标从,0,开始,.a0,数组名,表示第一个元素的,地址,.,即,&a0,和,a,的值相同,.,数组名,是地址常量,不能向它赋值和,&,运算,.,数组中各元素占一段连续的内存单元,数组名为首地址,.,引用数组元素时避免超界,.,常量表达式,只能是,常量,和包含,符号常量或,sizeof,表达式,不能包含变量,.,可以,int,a1020 , b30,同时定义多个数组,例,: #define MAXNUMB 100,char textMAXNUMB *3;,float array,sizeof,(double),;,例,:,Int,n;,scanf,(“%d”,int,b,n,!,2.,一维数组元素的引用,数组元素的引用方法有两种,:,下标法和指针法,.,指针法,1.,指向数组元素的指针的定义与赋值,.,int,*p, a20;,p= (,或,p=a) p,指向数组第一个元素,定义的同时赋初值,:,int,a20;,int,*P= (,或,*,p=a,;),2.,通过指针引用数组元素,C,规定,:,a+i,和,p+i,数组元素,ai,的,地址,*,(a+i),和,*,( p+i ),表示所指向的元素,ai,数组元素,ai,的,实际地址,:,a+i*d (d,是一个数组元素所占的字节数,),(d: 2 4 1 ),例如,:,整型数组,a,的首地址为,1000,a3,地址为,:1000+3*2=1006,即,a+3,和,p+3,都指向,a3,p+i ,a+i,p+7,a+7(1014),a0,a1,a2,a7,P+0,a+0 (1000),p+1,a+1 (1002),ai,通过指针引用数组元素,例,1,用指针法进行数据处理,Main(),int,a10,i,*p;,for(i=0;i=9;i+),scanf,(“%d”,printf,(“n”);,for(p=a;p=a+9;p+),printf,(“%d”,*p,) ;,printf,(“n”);,for(i=0;i=9;i+),printf,(“%d,”,*(a+i,);,运行结果,:,1 2 3 4 5 6 7 8 9 10,12345678910,12345678910,例,2,用指向字符数组的 指针进行字符处理,.,阅 读 程 序,Main(),char a20,*p;,int,i;,for(p=a;p=a+14;p+),scanf,(“%c”,p,);,printf,(“n”);,p=a;,for(i=0;i=14;i+),printf,(“%c,”,*(p+i),);,运行结果,:,I am a student.,I am a student.,可见,:,对于,字符串,的字符处理可通过,字符数组,来实现,.,也可通过指向字符串的指针实现,.,例,3,用指向字符串的指针进行字符处理,Main(),char,*p=“ I am a student.”,for( ;,*p!=0,; p+),printf,(“%c”,*p);,运行结果,:,I am a student.,直接把字符指针,指向字符串的首地址,3,数组的初始化,定义数组的同时对数组中元素赋值,.,例如,:,一维数组,int,a10=2,4,6,8,10,12,14,16,18,20;,char,ch,5=c,h,i,n,a;(,单个字符,),char,ch,6=“china”; (,字符串常量,),char,ch,6=“china” (,省略花括号,),char,ch,6=c,h,i,n,a,0;(,数组长度,6),char,ch, = c,h,i,n,a,0;,(,不指定数组长度,),二维数组的初始化,例,1:,int,a23=5,8,1,6,0,2 ;,char b23=w,o,r,k,e,r;,例,2:,int,a23= 5,8,1,6,0,2;,char b24=“,wor,”, “,ker,”; (,由于,0,下标不能用,3),char b24=w,o,r,0,k,e,r,0;,例,3:,int,a 3=5,8,1,6,0,2 ;,char b 3=w,o,r,k,e,r;,char b 4=“,wor,”, “,ker,”;,等价,例,1,:对十个整数排序,(,由小到大,),。,用起泡法和选择法,.,4 8 6 15 10 7 3 20 16 12,3 4 6 7 8 10 12 15 16 20,1.,选择法排序:,(n=10,个数,),将,n,个数中最小的数,找,出来,同第一个数,对调,再将后,n-1,个数中最小的数同第二个数对调,.,对,n(10),个数作,n-1,(9),轮比较,每轮都找出一个未经排序的数中最小的数。,基 本 思 想,算法分析,:,i=1(,比较,9,次找最小,), min=i;,for( j= 2 ; j=10; j+),if(a(j )a(min ) min=j;, t=a(i);,a(i)=a(min); a(min)=t;,i=2(,比较,8,次找最小,),For ( i=1; i=9; i+),比较,找最小,对调,3;,i+1;,main( ),int,i,j,k,t,*p;,int,a11=0,16,-5,9,3,1,27,81,-76,100,78;,for(i=1,i=,9,; i+) k=i; for(j=,i+1,;jaj),k=j;,t=ai; ai=ak ; ak=t; ,for(i=1;iaj+1),对调,2.,起泡法排序,(,由小到大,)p74 6.5:,程序 结构,:,if,main( ),int,i,j,t ;,int,a11=0,16,-8,9,3,1,27,84,-76,100,54;,for(i=1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!