C语言教学课件:13-3_字符数组.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教学 课件 13 字符 数组
- 资源描述:
-
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,第十三部分 数组,2,数组的概念、定义和使用,数组程序实例,数组作为函数参数,一维数值型数组的重要应用,字符数组和字符串,两维和多维数组,编程实例,主要内容,3,字符数组预备知识,字符常量与字符串常量有什么区别?,如何定义一个字符变量?,4,规定:,一个字符串书写时不能跨行,多个字符串之间仅由空白分隔,系统会将它们连成一个长字,符串。双引号需用转义符:,He said:Im ok!,。,字符串以字符数组形式保存,存储形式是在所有字符后放,0,作为串结束标志。例,Beijing,0,不是串内容,却是字符串表示不可缺的部分。,标准库的字符串处理函数都按这种表示设计,写字符串处理程序时也应该遵守这一规则。,5,字符数组与字符串,字符数组定义方式(与其他数组一样):,char line1000;,字符数组使用方式,(,与其他数组一样,),:,i=0;/*,注意越界控制,*,/,while(i1000&(linei=getchar()!=n)+i,;,字符数组初始化方式一:逐个字符赋值,char city15=B,e,i,j,i,n,g;,未指定初值的元素自动设,0,,编码,0,的字符称为,0,字符,/,空字符,,用,0,表示,,在,C,中有特殊用途,(字符串结束标志),。,6,若字符数组里存了一些字符后放,0,,就符合字符串形式,可当作字符串使用(,数组里存着字符串,):,char a5=g,o,o,d,b5=i,s,a,c5=o,k,0,d5=o,k,0,x,x5=i,s,n,o,t;,注意:,字符数组的,有效长度指第一个,0,前的字符个数,+1,7,初始化方式二:用字符串常量,char a120=Peking University;,未标元素个数时,数组大小确定为串长加,1,。例:,char a3=Peking University;,数组,a3,有,18,个字符元素。,字符数组变量中保存字符串后,可作字符串用。,例,若多个输出语句都用同样输出格式描述:,char outform1=”point:(%f,%f)n;,.,printf(outform1,x,y);,.,printf(outform1,s,t);,8,字符数组的赋值,将一个字符串赋值给一个字符数组,只能用在初始化的情况下,不能用在赋值语句中,例如,:,char str11;,str=,“,I am happy,”,;,是错误的,.,9,字符串的输入输出,逐个字符,I/O,:,%c,数组名,下标,整个字符串,I/O,:,%s,数组名,例 用,%c,main(),char str5;,int i;,for(i=0;i 5;i+),scanf(“%c”,for(i=0;i 5;i+),printf(“%c”,stri);,例 用,%s,main(),char str5;,scanf(“%s”,str);,printf(“%s”,str);,输入用字符数组名,不要加,&,输入串长度,数组维数,遇空格或回车结束,自动加,0,输出用字符数组名,遇,0,结束,10,int main(),int i;,char a5;,scanf(%s,a);,for(i=0;i 5;i+),printf(%c,ai);,printf(n%sn,a);,return 0;,运行情况:,(,1,)若输入,hel,正常,(,2,)若输入,hell,正常,(,3,)若输入,hello,用,%s,输出,会出现问题?,h e l 0,h e l l 0,h e l l o,输入字符串长度,”compare”,字符串比较函数,限界比较函数:,int strncmp(const char s1,const char s2,int n);,25,#include,#include,int main(),char str16=China,str26=Korea;,int yes;,yes=strcmp(str1,str2);,printf(%dn,yes);,yes=strcmp(China,Korea);,printf(%dn,yes);,if(,str1 str2,),printf(yes1n);,if(strcmp(str1,str2)0),printf(yes2n);,return 0;,26,strcat(char s,const char t);,t,是字符串,,s,是保存字符串的数组。把,t,复制到,s,已有的字符之后,形成连起的串。数组,s,必须足够大。,char b140=Programming,b210;,strcat(b1,language);,strcpy(b2,C);strcat(b1,b2);,字符串连接函数,另有限界连接函数,strncat,:,strncat(char s,const char t,int n);,string.h,还包含许多函数,参看有关标准库的一章,27,例,找出(标准输入)文本中最长行并输出,保存已读最长行以输出,数组,maxline,,按字符串形式。,数组,line,保存,新行,更长时转存,maxline,。,假定行长不超过,1022,字符,用符号常量定义数组大小。,函数,getline,读入一行,,存入参数数组并返回行长。,需防止越界,用参数,limit,控制实参数组长度。,int getline(int limit,char line);,基本处理框架:,while(,还有新行输入,),if(,新行比已记录的最长行更长,),记录新行及其长度,;,输出记录下来的最长行,;,28,行总有字符,(,空行有换行符,),,返回值,0,。文件结束时返回,0,。,设,MAXLEN,表示数组长度,大循环可写为:,while(getline(MAXLEN,line)!=0).,int main(),int n,max=0;/*,记录当前行和最长行长度*,/,char lineMAXLEN,maxlineMAXLEN;,while(n=getline(MAXLEN,line)0),if(n max)/*,新行更长,保存*,/,strcpy(maxline,line);max=n;,if(max 0),printf(”Len:%dn%sn,max,maxline);,return 0;,29,整个程序:,#include,#include,enum MAXLEN=1024;,int getline(int limit,char line);,int main(),int getline(int limit,char line),int c,i=0;,while(i 0),if(n max),max=n;,strcpy(maxline,line);,if(max 0),printf(%sn,maxline);,return 0;,另一种写法:,把两个数组作为外部变量,各函数里直接访问,不再作为参数传递。,31,int getline(void),int c,i=0;,while(i MAXLEN-2&,(c=getchar()!=EOF&c!=n),linei=c;+i;,if(c=n),linei=c;+i;,linei=0;,return i;,优点:,可简化函数定义和参数描述。,缺点:,数组名写在函数定义里,造成函数对全局数据的依赖。,32,程序的缺点:,1,)固定数组限制了能读入的最长行;,2,)出现超长行时出现截断,且长度统计错误。,长度统计错误问题易解决:数组满后继续读字符计数,但字符不存入,line,。,最后,得到实际最长行的长度,及该行中不超过,1022,个实际字符。,人们倾向于把,程序里大型、唯一、许多函数公用的数据(如大数组)定义为外部变量。一般数据用参数传递。,对于具体问题应怎样处理,要考虑软件系统实现各方面的问题,如方便、清晰、数据安全等因素。,怎么办?,33,要点回顾,一维数组的重要操作,排序,查找,插入,删除,元素交换,字符数组的如何定义,如何初始化?,字符数组的有效长度和字符数组?,常用的字符串处理函数有哪些?,34,数组的概念、定义和使用,数组程序实例,数组作为函数参数,一维数值型数组的重要应用,字符数组和字符串,两维和多维数组,编程实例,主要内容,35,两维和多维数组,一维数组有一个下标,元素线性排列。,需要处理更复杂的结构,如数值应用中的矩阵。,矩阵为两维,元素通过两个下标指定。如何表示?,例:计算两个,8,8,的矩阵的和及乘积,计算三维空间中的一系列点的中心。,36,二维数组的定义,定义方式:,数据类型数组名,常量表达式,常量表达式,;,例,int a34;,double b25;,int c234;,int a3,4;,(,),行数,列数,元素个数,=,行数*列数,二维和多维数组,称,a,为,34,的,int,(二维),数组,,b,为,25,的,double,(二维),数组等,,c,为,234,的,int,(三维)数组,37,数组元素的存放顺序,原因,:,内存是一维的,二维数组:按行序优先,多维数组:最右下标变化最快,int a32,a,0,1,a,1,0,a,1,1,a,2,0,a,2,1,0,1,4,5,2,3,a,0,0,a00 a01,a10 a11,a20 a21,int c234,0,1,2,3,4,5,6,7,.,20,21,22,23,c000,c001,c002,c003,c010,c011,c012,c013,c020,c021,c022,c023,c100,c101,c102,c103,c110,c111,c112,c113,c120,c121,c122,c123,二维和多维数组,38,例,int a34;,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,每个元素,ai,由包含,4,个元素,的一维数组组成,二维数组,a,是由,3,个元素组成,a0,a1,a2,行名,0,1,4,5,2,3,a01,a02,a03,a10,a11,a00,a13,a20,a21,a22,a23,a12,6,7,10,11,8,9,a0,a1,a2,二维数组理解,a,是开始位置(数组,a,的首地址),也是,a0,的开始位置,也是,a00,的位置,39,二维数组元素的初始化,分行初始化:,例,int a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,例,int a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,0,4,0,0,部分初始化,例,int a3=,1,4,5,;,a00,a01,a02,a10,a11,a12,1,0,0,4,5,0,第一维,长度省略初始化,40,二维数组元素的初始化,按元素排列顺序初始化:,例,int a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,例,int a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,4,0,0,0,部分初始化,例,int a3=,1,2,3,4,5,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,0,第一维,长度省略初始化,41,设有数组定义:,double a32;,int b44;,a,表示整个数组,,a0,、,a1,和,a2,表示成员数组。,a01,表示,a,的,0,成员数组中下标,1,的元素。例:,a21=a01+a11;,二维(多维)数组的表示和使用,for(i=0;i 4;+i),for(j=0;j 4;+j),bij=i+j;,42,例:向一个二维数组输入并输出其全部元素,#include,int main(),int i,j;,int b32;,printf(“,输入数据:,n”);,for(i=0;i 3;i+),for(j=0;j 2;j+),scanf(“%d”,for(i=0;i 3;i+),for(j=0;j 2;j+),printf(nb%d%d=%d”,i,j,bij);,printf(“n”);,return 0;,43,for(i=0;i N;+i),for(j=0;j N;+j),x=0.0;,for(k=0;k N;+k),x+=Aik*Bkj;,Cij=x;,for(i=0;i N;+i),for(j=0;j N;+j),printf(%f%c,Cij,j=N-1?n:);,例:写程序段求出由两维数组,A,、,B,表示的,55,矩阵的,乘积,存入两维数组,C,(设,A,,,B,已有值)并输出。,44,例:将,5,个同学的姓名从小到大排序并输出,#include,#include,void main(),char name520,temp20;,int i,j;,printf(,请输入学生姓名,:n);,for(i=0;i 5;i+),gets(namei);,for(i=0;i 5;i+),for(j=0;j 0),strcpy(temp,namej);,strcpy(namej,namej+1);,strcpy(namej+1,temp);,printf(,学生排序名单为:,n);,for(i=0;i 5;i+),printf(%sn,namei);,45,二维(多维)数组作为函数参数,下面函数求出,n5,数组中数据均值(,n,是参数):,double aavg(int n,double a5),int i,j;,double sum=0.0;,for(i=0;i n;+i),for(j=0;j 5;+j),sum+=aij;,return sum/(5*n);,可用于任何,n5,的数组,但不能用于例如,47,的数组,下章将介绍一种定义通用函数的方法。,作为函数参数时不必给出最左一维长度,但要求给出除最左一维外其他各维的长度。,46,例,:,有一个,3*4,的矩阵,求出其中的最大元素的值,.,#include,int max_value(int,int 4);,int max_value(int n,int array4),int i,j,max=array00;,for(i=0;i n;i+),for(j=0;j max),max=arrayij;,return max;,int main(),static int a34=1,3,5,7,2,4,6,8,15,17,34,12;,printf(“max value is%dn”,max_value(3,a);,return 0;,47,数组的概念、定义和使用,数组程序实例,数组作为函数参数,字符数组和字符串,两维和多维数组,编程实例,主要内容,48,编程实例,本节讨论一些基于数组的编程实例。,一个具体问题可写出许多不同的程序。从,问题,到,程序,的工作过程中,许多地方需要编程者做出选择。,有些选择涉及对问题的不同考虑或认识,可能引起程序间的显著差异。,49,例,1,:成绩直方图,文件里保存着一批学生成绩,写程序读入这些成绩,产生其平均值,M,和标准差,S,,并做直方图。有定义:,程序中需要反复使用学生成绩,应存入数组,(double,型,),。,程序工作比较多,考虑将主要工作划分为若干函数。,程序工作分为三步(第一层分解):,输入,,计算并输出统计量,,计算并输出直方图。,50,enum NUM=200,HISTOHIGH=60;,double scoresNUM;,int readscores(int lim,double tb);,void statistics(int num,double tb);,void histogram(int num,double tb,int high);,int main(,void,),int n=readscores(NUM,scores);,statistics(n,scores);,histogram(n,scores,HISTOHIGH);,return 0;,程序主体结构,函数原型,51,int readscores(int lim,double tb),int i=0;,while(ilim&scanf(%lf,&tbi)=1),+i;,return i;,输入成绩函数,52,void statistics(int n,double tb),int i;,double s,sum,avr;,if(n 2),/*,项数小于,2,时的处理*,/,printf(Data too few.n);,return;,for(sum=0.0,i=0;i n;+i),sum+=tbi;,avr=sum/n;,for(sum=0.0,i=0;i n;+i),sum+=(tbi-avr)*(tbi-avr);,s=sqrt(sum/(n-1);,printf(Total students:%dn,n);,printf(Average score:%fn,avr);,printf(Std deviation:%fnn,s);,计算并输出统计值函数,如果需要保留,avr,和,s,?,53,直方图生成,(用横向的直方图):,每个成绩段输出一组字符,选,H,作为基本字符。,void prtHH(int n),int i;,for(i=0;i n;+i)putchar(H);,分段长度可用符号常量,SEGLEN,表示,根据它可算出分段数,HISTONUM,。,enum SEGLEN=5,HISTONUM=(100/SEGLEN)+1;,54,分段成绩数统计:用数组统计各分段成绩人数,将数组命名为,segs,,其中应有,HISTONUM,个计数器。,处理的是等长分段,存在从成绩得到计数器下标的简便方法。,segs(int)scoresi)/SEGLEN+;,将成绩强制转到,int,后除以分段长度得到计数器下标。,下面考虑用如下形式输出直方图行:,80:23|HHHHHHHHHHHHHH,为使直方图规范化,最长行,HISTOHIGH,个字符。,55,void histogram(int n,double tb,int,high,),int i,mx;,int segsHISTONUM;,if(n=0)return;,for(i=0;i HISTONUM;+i)segsi=0;,for(i=0;i n;+i)/*,统计分段人数*,/,segs(int)tbi/SEGLEN+;,for(mx=1,i=0;i mx),mx,=segsi;/*,找最大值*,/,for(i=0;i HISTONUM;+i),/*,输出*,/,printf(%3d:%4d|,(i+1)*SEGLEN,segsi);,prtHH(segsi*,high,/mx);,putchar(n);,56,分析和改进,若文件中都是,0,到,100,的数值,程序能得到正确结果。出现不法数据呢?如混入一个,178,,程序会怎么样?,实际软件应正确处理合法输入,还应在输入有错时合理处置。如果编译程序遇到不合法程序就垮台,还可能破坏操作系统,还有人愿意用它吗?,程序抵御不合法数据破坏的能力称为,强健性,。,修改后的,readscores,如下,首先需要检查每个输入项,只将合法数据存入数组。,有关数据是否处理完的情况只能在循环结束后检查。,57,int readscores(int limit,double tb),int i=0,line=1;,double x;,for(;ilimit+line),if(0.0=x&x=100.0),tbi=x;,+i;,else printf(Error,line%dn,line);,if(i=limit&scanf(%lf,&x)=1),/*,还有数据*,/,printf(Too many data.Output wrong.n);,return 0;,/*,可以用,!feof(stdin),判断*,/,return i;,还可考虑其他改进。,58,例,2“,计算”数组的大小,例:求,2.38,、,3.142,、,5.64,、,8.27,、,6.44,的平均值。,#include,double a5=2.38,3.142,5.64,8.27,6.44;,int main(),int n;,double sum=0.0;,for(n=0;n 5;+n)sum+=an;,printf(Average:%fn,sum/5);,return 0;,缺点:改一组数据(不是,5,个)就要改程序(程序里的三个,5,都要改)。,59,运算符,sizeof,求类型或变量占内存量。,sizeof(a),求出,a,大小,,sizeof(a0),求出,a,元素,大小。,(sizeof(a)/sizeof(a0),求出数组,a,的元素个数。,#include,#define NUM(x)(sizeof(x)/sizeof(x0),double a=2.38,3.142,5.64,8.27,6.44;,int main(),int n;,double sum=0.0;,for(n=0;n,NUM(a),;+n)sum+=an;,printf(Average:%fn,sum/,NUM(a),);,return 0;,/*,更改数组数据时只需添入新数据*,/,60,#,define NUM(x)(sizeof(x)/sizeof(x0),double avg(double a),double x=0.0;,int i,len=,NUM(a),;,for(i=0;i len;+i)x+=ai;,return x/len;,这样不行,:,sizeof,是静态处理的运算符,数组参数实际上不是数组(是指针,,sizeof(a),求出一个指针的大小(通常等于一个,int,的大小),,详见第,7,章)。,61,例,3,:数组的划分,6.2.3,节要求分段输出学生成绩。一种可能方式是调整成绩排列,把不及格成绩移到左边,及格成绩移到右边,而后顺序输出,按照某种标准把数组里的数据分段称为“划分”,考虑一种划分算法:用两个下标变量,逐步从两端向中间移,保证下图所示的不变关系:,循环开始时令,i=0,,,j=n-1,,关系成立,到,i=j,不成立时,划分完成,62,划分循环:,for(i=0,j=n-1;,i j,;),while(i=j,while(i=PASS)-j;,if(,i j,),x=scoresi;,scoresi=scores j;,scores j=x;,+i;-j;,if(i=j,循环结束时,,scores,里下标,0,到,i-1,是小于,60,分的成绩,下标,i,到,n-1,是不小于,60,的成绩,,i,是不及格人数。,63,划分函数:,int partition(int num,double a,double cut),double x;,int i=0,j=num-1;,while(i=j),while(i=j,while(i=cut)-j;,if(i j),x=ai;ai=a j;aj=x;,+i;-j;,return i;,例,4,:,m,个猴子选大王,报,n,的出列。,m=8,n=3,算法思路:,数组,am,:,数组元素下标代表,1,m,只猴子,数组元素内容代表下一只要报数的猴子,整数,p,:,正在报数的猴子,整数,q,:,前一个报数的猴子,整数,t,:p,所指猴子所报的数,初值,1,8,7,6,5,4,3,2,a1,a2,a3,a4,a5,a6,a7,a8,q,p,t=0,const int m=8;n=3;,int a=0,2,3,4,5,6,7,8,1;,int q=m,p=am,t=0;,或,for(i=1;im;i+)ai=i+1;,am=1;q=m;,p=am,;t=0;,0,a0,a0,不用,Josephus,问题,1,8,7,6,5,4,3,2,a1,a2,a3,a4,a5,a6,a7,a8,q,p,t=0,报数开始,直到剩下一只猴子,do,while,下一个要报数的猴子将成为现在报数的猴子,(p!=aq);,确定现在报数的猴子,报数,p=aq;,t=t+1;,if(t%n)!=0),如果,t,不是,n,的倍数,yes,:,no,:,当前报数的猴子,p,成为前一个报数的猴子,q,q=p;,else,当前猴子退出,调整报数次序,当前报数猴子的内容,ap,赋给前一个报数猴子,q,的内容,aq,aq=ap;,q,66,#include,int main(),int m=8,n=3;,int a=0,2,3,4,5,6,7,8,1;,int q,p,t;,q=m;,t=0;,do,p=aq;,t=t+1;,if(t%n)!=0),q=p;,else,aq=ap;,while(p!=aq);,printf(The king is%dthn,p);,return 0;,如何用函数改写?,p,t=1,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If(,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),初值,:q=m=5;n=2,t=0;,q,a1,a2,a3,a4,a5,1,5,4,3,2,a1,a2,a3,a4,a5,1,5,4,3,2,p,q,p,t=2,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,a1,a2,a3,a4,a5,1,5,4,3,2,p,a1,a2,a3,a4,a5,1,5,4,3,2,q,3,p,t=3,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,p,t=4,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,p,t=5,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,p,t=6,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,p,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,3,p,t=7,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,3,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,3,p,t=8,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,q,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,3,3,q,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,3,5,3,t=9,猴子选大王过程,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),m=5;n=2;,p,5,a1,a2,a3,a4,a5,1,5,4,3,2,3,3,3,q,p,a1,a2,a3,a4,a5,1,5,4,3,2,3,5,3,3,q,do,p=aq;t=t+1;,If,(t%n)!=0),q=p;,else,aq=ap;,while(,p!=aq),大王,n,(奇数)阶幻由,1,到,n,2,的自然数组成,每行、每列及两条对角线上之和均等于,n(n,2,+1)/2,。,三阶、五阶魔方阵,2,9,7,4,5,3,6,1,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,8,1,3,6,7,4,9,2,5,77,五阶幻方算法,从左下向右上放数,先把,1,放在第一行的中间位置。,下一个数放在上一个数的右上方,若右上方已超出方阵的第一行,则下一个数放在该列的最后一行上。,若右上方已超出方阵的最后一列,则下一个数放在该行的第一列上。,若右上方已有数或右上方已超出方阵的第一行和最后一列,则下一个数放在上一个数的正下方。,78,Q&A!,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言教学课件:13-3_字符数组.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/11265862.html