数组与字符串.ppt
数组与字符串 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望数组u一系列同类数据(object)的集合,每个数据叫做一个元素u数组名,数组类型u数组元素用数组名加下标表示,等同一个同类型变量u数组名单用是该数组的起始地址u数组下标不能超过数组大小。数组越界不是语法错,将导致不可预料的结果一维数组u类型名 数组名大小uint a10;/a0 a9;ua2=4;cin a4;b=a1+1;u用下标一次只能使用一个元素,下标可以是表达式,如an,ai*j+1,从0开始一维数组初始化uint a3=1,2,3;int a=1,2,3;/不定大小将根据初值数目确定数组大小,由编译器完成。int a5=1,2,3;u在内存中的存放顺序:a0 a1 a2 a3 a4 a5 a6 a7 a8a9a二维数组udouble mat144;/mat100,mat101,mat102,.,mat133;uint a23=1,2,3,4,5,6;int a3=1,2,3,4,5,6;/只有最前面一维可以不定大小int a23=1,2,3,4,5,6;二维及多维数组的存储顺序uint a23;ua00,a01,a02,a10,a11,a12u后面的下标变化快数组作为参数u数组元素作为实际参数,等同变量u数组名作为函数参数,传递的是数组第一个元素的地址,也就是数组的起始地址,不是整个数组。函数通过起始地址可以访问到任一个元素。uexamples:杨辉三角形,数组求和,矩阵求迹#include#include using namespace std;void main(void)int Table1111=1,i,j;for(i=1;i 11;i+)for(j=1;j=i+1;j+)Tableij=Tablei-1j-1+Tablei-1j;Tablei0=1;for(i=0;i 11;i+)for(j=0;j (10-i)*2;j+)cout;for(j=0;j 11;j+)if(Tableij)cout setw(4)Tableij;coutendl;#include#include using namespace std;void main(void)int Table1121=0,0,0,0,0,0,0,0,0,0,1,j;for(int i=1;i 11;i+)Tablei10-i=1;Tablei10+i=1;for(j=2;j 2*i;j+=2)Tablei10-i+j=Tablei-110-i+j-1+Tablei-110-i+j+1;for(i=0;i 11;i+)for(j=0;j 21;j+)if(Tableij)coutsetw(3)Tableij;else cout ;coutendl;#include#include using namespace std;void main(void)int Table11=1,i,j;for(i=1;i 11;i+)/输出一行 for(j=0;j(10-i)*2;j+)cout;for(j=0;ji;j+)coutsetw(4)Tablej;cout 0;j-)Tablej=Tablej-1+Tablej;Table0=1;字符串(strings)u以0结尾的字符数组。uchar*c=“hello”;uchar c6=h,e,l,l,o,0;uchar c=“hello”;uchar c=104,101,108,108,111,0;u字符串的格式化输入以空格为分隔符,输出到0为止,不输出0。u字符型数据的格式化输出为字符,不是数字,字符指针格式输出是字符串,不是指针字符串处理函数ustrcat(),strcpy,strcmp,strlen,strlwr,strupr,u#include u自己编写字符串处理函数mystrlen,mystrlwr,strcmp上机练习与思考题u书上的例题及习题u按自己的理解修改课堂练习程序,编译运行,看自己的理解对不对练习u找到2-1000000之间的所有素数,全部输出来。要求在求素数时,只能对已知的素数求模,即对不大于自身平方根的所有素数求模(这是最快的传统方法)。u下次课讲指针