Presentation is loading. Please wait.

Presentation is loading. Please wait.

第四章 数组 4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化 1.一维数组定义 定义格式:类型 数组名[常量表达式];

Similar presentations


Presentation on theme: "第四章 数组 4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化 1.一维数组定义 定义格式:类型 数组名[常量表达式];"— Presentation transcript:

1 第四章 数组 4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化 1.一维数组定义 定义格式:类型 数组名[常量表达式];
第四章   数组  常量表达式中不能是变量  4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化  1.一维数组定义  定义格式:类型 数组名[常量表达式];  // 常量表达式中不能是变量 

2 第四章   数组 例:int a[10];   定义一个一维数组,数组名为a,此数组共有10个元素,且均为整型,这10个元素分别为a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9],称为数组元素或下标变量。 

3 第四章 数组 例:char c[5]; //数组元素c[0],c[1],c[2],c[3],c[4]均为char型。
第四章   数组 例:char c[5]; //数组元素c[0],c[1],c[2],c[3],c[4]均为char型。  例:int iArray[10]; //全局数组,初始化为0,跨文件作用域,静态生存期。 

4 第四章 数组 2.一维数组的初始化 (1)初始化时,初始化值个数不能多于数组元素个数,初始化值不能省略。 例:
第四章   数组 2.一维数组的初始化  (1)初始化时,初始化值个数不能多于数组元素个数,初始化值不能省略。  例:   int array1[5]={1,2,3,4,5,6};//错误    int array2[5]={1,,2,3,4};//错误    int array3[5]={1,2,3,};//错误    int array4[5]={};//错误 

5 第四章 数组 (2)初始化值个数少于数组元素个数时,不足的初始化为0(全局或静态数组)或不确定(局部数组)。
第四章   数组 (2)初始化值个数少于数组元素个数时,不足的初始化为0(全局或静态数组)或不确定(局部数组)。  例:#include<iostream.h>     int array1[5]={1,2,3};     static int array2[5]={1};     void main()     {  

6 第四章 数组 int arr1[5]={2}; static int arr2[5]={1,2}; int n;
第四章   数组   int arr1[5]={2};    static int arr2[5]={1,2};    int n;    cout<<"global:\n";    for(n=0;n<5;n++)     cout<<" "<<array1[n]; 

7 第四章 数组 cout<<"\nglobal static:\n"; for(n=0;n<5;n++)
第四章   数组   cout<<"\nglobal static:\n";    for(n=0;n<5;n++)    cout<<" "<<array2[n];    cout<<"\nlocal:\n";    cout<<" "<<arr1[n]; 

8 第四章 数组 cout<<"\nlocal static:\n"; for(n=0;n<5;n++)
第四章   数组   cout<<"\nlocal static:\n";    for(n=0;n<5;n++)     cout<<" "<<arr2[n];    cout<<endl;   } 

9 第四章 数组 运行结果:global: 1 2 3 0 0 global static: 1 0 0 0 0 local:
第四章   数组  运行结果:global:                 global static:                 local:                 local static:          

10 第四章 数组 3.初始化字符数组 注:长度为n的字符数组至少需要n+1个字节的存储空间。
第四章   数组 3.初始化字符数组  注:长度为n的字符数组至少需要n+1个字节的存储空间。  例:char array[10]={"hello"};   char array[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};   char array[10]="hello";   char array[5]=“hello”;//错误    char array[5]={ ‘\t’,‘\t’,‘\t’,‘\t’,‘\0’}; 

11 第四章   数组 3.省略数组大小:初始化数组时可省略数组大小,此时大小由初始化值的个数决定。  例:int a[]={2,4,6,8,10}; 

12 第四章 数组 例:#include<iostream.h> void main() {
第四章   数组 例:#include<iostream.h>    void main()    {     static int a[]={1,2,4,8,16};     for(int i=0;i<(sizeof(a)/sizeof(a[0]));i++)       cout<<a[i]<<" ";    cout<<endl;    } 

13 第四章 数组 例:#include<iostream.h> #include<string.h>
第四章   数组 例:#include<iostream.h>    #include<string.h>    void main()    {     char ch[]="how are you";     cout<<"size of array:"<<sizeof(ch)<<endl;    cout<<"size of string:“      <<strlen("how are you")<<endl;    } 

14 第四章 数组 例: char s1[80]; int d[]={1,2,3,4,5,6};
第四章 数组 例: char s1[80]; int d[]={1,2,3,4,5,6}; double num[5]={1.0,3.0,5.0}; long ldata[10]={0l} #define first 15 int D3[]={firsr,first+2,first+3};

15 第四章 数组 二、数组的访问 1.通过下标操作符[]访问指定的数组元素。 K=num[4]; //取指定数组元素的值
第四章 数组 二、数组的访问 1.通过下标操作符[]访问指定的数组元素。 K=num[4]; //取指定数组元素的值 num[2]=6.7; //向指定数组元素赋值 cout<<name[3*k]; //输出指定的数组元素的值,下标可以是任意的表达式

16 第四章 数组 例:给一维数组赋一组Fibonacci数。 void main() { int iArray[10];
第四章   数组 例:给一维数组赋一组Fibonacci数。 void main()  {  int iArray[10];  iArray[0]=1;  iArray[1]=1;  iArray[2]=2;  iArray[3]=3;   //……   iArray[9]=55;  //……  } 

17 第四章 数组 例:给一维数组赋一组Fibonacci数,使用一重循环进行。 void main() { int iArray[10];
第四章   数组 例:给一维数组赋一组Fibonacci数,使用一重循环进行。  void main()  {  int iArray[10];  iArray[0]=1;  iArray[1]=1;  for(int i=2;i<10;i++)    iArray[i]=iArray[i-1]+iArray[i-2];  //……  } 

18 第四章 数组 三、数组单元在内存中的排列 长度为n的数组,下标范围为0至(n-1)。 int w[5]={23,24,25,26};
第四章 数组 三、数组单元在内存中的排列 长度为n的数组,下标范围为0至(n-1)。 int w[5]={23,24,25,26}; w[0] w[1] w[2] w[3] w[4] 23 24 25 26

19 第四章 数组 4.1.2一维数组的应用举例 例4.1:输入八个整数,然后按输入的相反顺序显示这些数据。

20 第四章 数组 #include<iostream.h> void main() { int data[8];
第四章 数组 #include<iostream.h> void main() { int data[8]; cout<<endl<< “请输入八个整数:”; int i; for(i=0;i<8;i++) cin>>data[i]; cout<<endl; for(i=7;i>=0;i--) cout<<data[i]<<‘’; }

21 第四章 数组 说明:正向扫描数组和反向扫描数组的方法 正向扫描有n个元素的数组的方法 for(i=0;i<n;i++)
第四章 数组 说明:正向扫描数组和反向扫描数组的方法 正向扫描有n个元素的数组的方法 for(i=0;i<n;i++) for(i=0;i<=n-1;i++) 反向扫描有n个元素的数组的方法 for(i=n-1;i>=0;i--)

22 第四章 数组 例4.1的改进 #include<iostream.h> #define size 8 void main()
第四章 数组 例4.1的改进 #include<iostream.h> #define size 8 void main() { int data[size]; cout<<endl<<“入”<< size<<“八个数:”; int i; for(i=0;i<size;i++) cin>>data[i]; cout<<endl; for(i=size-1;i>=0;i--) cout<<data[i]<<‘’; }

23 第四章 数组 例4.2 输入10个整数到一个数组中,调整这10个数在数组中的排列位置,使得其中最小的一个数成为数组的首元素。

24 第四章 数组 #include<iostream.h> #define size 10 void main()
第四章 数组 #include<iostream.h> #define size 10 void main() { int data[size]; cout<<endl<<“请输入 ”<<size<<“个整数:”; int m; for(m=0;m<size;i++) cin>>data[m]; int j=0; for(int i=1;i<size;i++) if(data[i]<data[j]) j=i; if(j>0) { int k=data[0]; data[0]=data[j]; data[j]=k; } cout<<endl; for(m=0;m<size;m++) cout<<data[m]<<‘ ’;

25 第四章 数组 例4.3 重新安排整数序列12、23、 9、 34、 45、 7、 78、-33、 59和 3的顺序,使其按升序排列。显示排序前后的这两个整数序列。

26 第四章 数组 #include <iostream.h> void main()
第四章 数组 #include <iostream.h> void main() { int data[]={12,23, 9, 34, 45, 7 ,78 ,-33 ,59 ,3}; int m; cout<<endl<<“排序前:”; for (m=0;m<10;m++) cout<<data[m]<<‘’; for (m=0;j<9;m++){ int j=m; for (int i=m+1;i<10;i++) if (data [i]<data [j]) j=i;

27 第四章 数组 if(j>m){ k=data[i]; data[i]=data[m]; data[m]=k; }
第四章 数组 if(j>m){ k=data[i]; data[i]=data[m]; data[m]=k; } cout<<endl<<“排后的序列:”; for(i=0;i<10;i++) cout<<data[i]<<‘ ’;

28 第四章 数组 例4.4 显示输出100以内的所有质数。 质数:也叫素数,指除1和它本身以外不能被别的数整除的整数。最小的质数是2

29 第四章 数组 #include<iostream.h> void main() { bool p[100];
第四章 数组 #include<iostream.h> void main() { bool p[100]; cout <<“100以内的质数有:2”; int i; for (i=3;i<100;i+=2)p[i]=true; for (i=3;i<100;i+=2) if (p[i]){ cout <<‘ ’<<I; for(int j=i+i+I;j<100;j+=i+i) p[j]=false }

30 第四章 数组 4.2 多维数组 1.二维数组定义 例:int a[3][4];
第四章   数组  4.2 多维数组 1.二维数组定义  格式:类型 数组名[常量表达式1][常量表达式2];  例:int a[3][4];   表示定义了一个二维数组,数组名为a,此数组共有12个元素,且均为整型,这12个元素分别为a[0] [0], a[0][1], a[0][2], a[0][3], a[1][0], a[1][1], a[1][2], a[1][3], a[2][0], a[2][1],a[2][2], a[2][3]。 

31 第四章 数组 内存表示: a[0][0] a[0][1] a[0][2] a[0][3]
第四章   数组  内存表示:   a[0][0] a[0][1] a[0][2] a[0][3]  a[1][0] a[1][1] a[1][2] a[1][3]  a[2][0] a[2][1] a[2][2] a[2][3] 

32 第四章 数组 2.二维数组初始化 例:int b[2][3]={{1,2,3},{4,5,6}};
第四章   数组  2.二维数组初始化  例:int b[2][3]={{1,2,3},{4,5,6}};    int b[2][3]={1,2,3,4,5,6};  3.若初始化值个数少于数组元素个数,不足的补0(全局数组和静态数组)或不确定(局部数组)。 

33 第四章 数组 例:#include<iostream.h> void main() {
第四章   数组 例:#include<iostream.h>    void main()    {  int array1[2][3]={1,2,3,4,5};  int array2[2][3]={{1,2},{4}};  int i,j;  for(i=0;i<2;i++)  {  for(j=0;j<3;j++)      cout<<array1[i][j]<<","; 

34 第四章 数组 cout<<endl; } for(i=0;i<2;i++) {
第四章   数组 cout<<endl;  }  for(i=0;i<2;i++)   {  for(j=0;j<3;j++)  cout<<array2[i][j]<<","; 

35 第四章 数组 4.省略第一维大小:初始化多维数组时,第一维大小可省略。
第四章   数组 4.省略第一维大小:初始化多维数组时,第一维大小可省略。    例:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};      static int a[][4]={{1,2,3},{},{4,5}}; 

36 第四章 数组 二维数组应用举例 例输入一个5×5的整数矩阵,然后将之转置并显示转置后的矩阵。

37 第四章 数组 #include<iomanip> #define size 5 void main() {
第四章 数组 #include<iomanip> #define size 5 void main() { int data[size][size],i,j; for(i=0;i<size;i++) for(j=0;j<size;j++) cin>>data[i][j]; for(i=0;i<size-1;i++) for(j=i+1;i<size;j++){ int d=data[i][j]; data[i][j]=data[i][j]; data[i][j]=d; } { cout<<endl; for(j=0;j<5;j++) cout<<setw(8)<<data[i][j];

38 第四章 数组 例4.6 定义一个25行25列的数组,并将其左上三角部分的元素改为1(包括对角线,其余元素置为0然后显示输出这个数组。

39 第四章 数组 #include<iomanip> void main() { int data[25][25]={{0}};
第四章 数组 #include<iomanip> void main() { int data[25][25]={{0}}; int I,j; for(i=0;i<25;i++) for(j=0;j<25-i;j++) data[i][j]=1; { cout<<endl; for(j=0;25;j++) cout<<setw(2)<<data[i][j]; }

40 第四章 数组 例4.7计算如下所示两个矩阵的乘积 2 3 -5 0 12 -1 27 8 91 22 -32 1 25 13 65 0 5
第四章 数组 例4.7计算如下所示两个矩阵的乘积   2  3  -5  0   12 -1  27  8   91 22  -32 1   25 13  65  0  5   -2 0  18  10 45   53 33  3   9 0   7 61  26 -37 -1

41 第四章 数组 程序: #include<iomanip.h> void main() {
第四章 数组 程序: #include<iomanip.h> void main() { int A[3][4]={{2,3,-5,0},{12,-1,27,8},{91,22,-32,1}}; int B[4][5]={{25,13,65,0,5},{-2,0,18,10,45}, {53,33,3,9,0},{7,61,26,-37,1}}; int c[3][5]={{0}}; int i,j; for (i=0;i<3;i++) for (j<0;j<5;j++) for(int k=0;k<4;k++) c[i][j]+=A[i][j]*B[k][j]; for(int i=0;i<3;i++) { cout<<endl; for(int j=0;j<5;j++) cout<<setw(5)<<c[i][j]; }

42 第四章 数组 4.3 字符数组与字符串 4.3.1一维数组与字符串 C++字符串是一个以‘\0’结为的字符序列
第四章 数组 4.3 字符数组与字符串 4.3.1一维数组与字符串 C++字符串是一个以‘\0’结为的字符序列 字符串的长度:字符串中字符的个数 字符串的存储空间:字符串中字符的个数加1 字符串常量的表示方法: “c++程序设计“ ”First line\nsecond line”

43 第四章 数组 一维字符数组的定义和初始化 char s1[]=“I am going”;
第四章 数组 一维字符数组的定义和初始化 char s1[]=“I am going”; char s2[]={‘I’,’a’,’m’,’g’,’0’,’I’.’n’,’g’,’\0’}; 字符数组的访问(不用使用下标,直接通过数组名访问存在于其中的字符串。) cout<<s1<<endl<<s2;

44 第四章 数组 4.3.2二维字符数组与字符串 1.二维字符数组的定义和初始化 说明:定义了一个7行4列的字符数组
第四章 数组 4.3.2二维字符数组与字符串 1.二维字符数组的定义和初始化 char wd[][4]={“sun”,”mon”,”tue”,”wed”,”thu”,”fri”,”sat”}; 说明:定义了一个7行4列的字符数组 行数由初始化数据的个数决定, 列数不得小于最长的初始字符串的长度加1

45 第四章 数组 2.二维字符数组的访问(通过行下标访问存在于二维数组中的字符串常量)
第四章 数组 2.二维字符数组的访问(通过行下标访问存在于二维数组中的字符串常量) cout<<endl<<wd[4]; 输出结果为:thu

46 第四章 数组 4.3.3 字符串的主要操作 1.求字符串的长度 调用格式:strlen(字符串) 功能:计算并返回字符串的长度。 例:
第四章 数组 字符串的主要操作 1.求字符串的长度 调用格式:strlen(字符串) 功能:计算并返回字符串的长度。 例: cout<<strlen(“How long?”); 输出结果为:9 cout<<strlen(wd[4]); 输出结果为:3

47 第四章 数组 2.字符串复制 调用格式:strcpy(字符串变量,字符串) 功能:将字符串复制到字符串变量中 例:
第四章 数组 2.字符串复制 调用格式:strcpy(字符串变量,字符串) 功能:将字符串复制到字符串变量中 例: char s[]=“12345”; cout<<s<<‘’; cout<<strcpy(s,”ABCD”)<<‘’; cout<<s; 输出结果为:12345 ABCD ABCD

48 第四章 数组 3. 字符串的连接 调用格式:strcat(字符串变量,字符串)
第四章 数组 3. 字符串的连接 调用格式:strcat(字符串变量,字符串) 功能:将字符串复制到字符串变量中原有字符串的后面,形成连接效果。 例: char s[]=“12345”; cout<<s<<‘’; cout<<strcat(s,”ABCD”)<<‘’; cout<<s; 输出结果: ABCD 12345ABCD

49 第四章 数组 4.字符串的比较 调用格式:strcmp(s1,s2) 功能: strcmp(s1,s2)= 0 若s1等于s2
第四章 数组 4.字符串的比较 调用格式:strcmp(s1,s2) 功能: strcmp(s1,s2)= 若s1等于s2 正整数 若s1大于s2 负整数 若s1小于s2

50 第四章 数组 if(!strcmp(“ABCD”,”abcd”) cout<<“相等”; else
第四章 数组 if(!strcmp(“ABCD”,”abcd”) cout<<“相等”; else cout<<“ 不相等”; 输出结果为:不相等 比较过程是:首先比较两个首字母的大小(排在字母表前面的比排在后面的小)

51 第四章 数组 5.求子串位置 调用格式:strstr(字符串,子串)
第四章 数组 5.求子串位置 调用格式:strstr(字符串,子串) 功能:在字符串中寻找与子串相等的子串,如找到,返回该字符串的从子串起始处的后半部分,否则返回一个空字符串。 char s[]=“abcdefghi”; cout<<s[3]<<‘ ’<<strstr(s,”def”); 输出结果为:d defghi

52 第四章 数组 6.字符串输出 调用格式:cout<<“字符串” 功能:显示输出字符串

53 第四章 数组 7.字符串输入 调用格式1:cin>>字符串变量 功能:输入一个无空白字符的字符串。 例:
第四章 数组 7.字符串输入 调用格式1:cin>>字符串变量 功能:输入一个无空白字符的字符串。 例: char s1[50],s2[50]; cin>>s1>>s2; 若输入:ABCDEF 1234

54 第四章 数组 格式2:cin.geline(字符串变量,变量大小) 功能:从键盘输入一个以回车键标志结束的字符串。 例:
第四章 数组 格式2:cin.geline(字符串变量,变量大小) 功能:从键盘输入一个以回车键标志结束的字符串。 例: char s[18]; cin.getline(s,18)

55 第四章 数组 字符串处理应用举例 例4.8 输入一个字符串,将其中所有的小写字母换为大写字母,大写字母换为小写字母,然后显示输出转换后的字符串。

56 第四章 数组 #include <iostream.h> void main() { char s[18];
第四章 数组 #include <iostream.h> void main() { char s[18]; cin.getline(s,18); for (int i=0;s[i];i++) s[i]=(islower(s[i])?toupper(s[i]):tolower(s[i])) cout<<s; }

57 第四章 数组 例4.9:按行输入字符串,从中摘出词并建立词表。当词表中的词满20个或发现名为QUIT的单词时,显示输出词表,程序结束。词表中不得有重复的词,每个词的长度不超过10。

58 第四章 数组 for(j=0;j<i;j++) #include <iostream.h>
第四章 数组 #include <iostream.h> #include <strong.h> void main() { char s[11],dict[20][11]; int i; while(i<20) { cin>>s; if(!strcmp(s,”QUIT”)) break; for(j=0;j<i;j++) if(!strcmp(s,dict[j]))break; if(j==i){ strcpy(dict[i],s); i=i++; } for(j=0;j<i;j++)cout<<dict[j]<<endl;

59 第四章 数组 本章小结:


Download ppt "第四章 数组 4.4.1一维数组的定义和初始化 一、一维数组的定义和初始化 1.一维数组定义 定义格式:类型 数组名[常量表达式];"

Similar presentations


Ads by Google