C++语言程序设计 第六章数组指针与字爷串 清华大学郑莉
1 第六章 数组 指针与字符串 清华大学 郑 莉 C++语言程序设计
C++语言程序设计 清华大学郑莉 本章主要内率 数组 ●指针 动态存储分配 指针与数组 指针与函数 ●字符串
C++语言程序设计 清华大学 郑莉 2 本章主要内容 ⚫ 数组 ⚫ 指针 ⚫ 动态存储分配 ⚫ 指针与数组 ⚫ 指针与函数 ⚫ 字符串
C++语言程序设计 清华大学郑莉 数组的概念 数 数组是具有一定顺序关系的若干相 同类型变量的集合体,组成数组的变量 组称为该数组的元素。 数组属于构造类型。 3
C++语言程序设计 清华大学 郑莉 3 数组的概念 数组是具有一定顺序关系的若干相 同类型变量的集合体,组成数组的变量 称为该数组的元素。 数组属于构造类型。 数 组
C++语言程序设计 清华大学郑莉 维数组的声明与引用 数 维数组的声明 类型说明符数组名常量表达式 组数组名的构成方法与一般变量名相同 例如:inta[10] 表示a为整型数组,有10个元素:a[0]-.a[9] 引用 必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7a[2*3
C++语言程序设计 清华大学 郑莉 4 一维数组的声明与引用 ⚫ 一维数组的声明 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10]; 表示 a 为整型数组,有10个元素:a[0]...a[9] ⚫ 引用 必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[2*3] 数组名的构成方法与一般变量名相同。 数 组
C++语言程序设计 清华大学郏莉 例6.1一维数组的声明与引用 include : for(=0; i<10; i++) 数 using namespace std; i void main( cout<< Al<< 组{intA10,010; <<"]="<<A可; int i: cout<< Br<<i for(i=0;i<10;i++) <"1=" <B0<<endl; A[=21 B[10--1]=A[;}
C++语言程序设计 清华大学 郑莉 5 例6. 1一维数组的声明与引用 #include using namespace std; void main() { int A[10],B[10]; int i; for(i=0;i<10;i++) { A[i]=i*2-1; B[10-i-1]=A[i]; } 数 组 for(i=0;i<10;i++) { cout<<"A["<<i <<"]="<<A[i]; cout<<" B["<<i <<"]=" <<B[i]<<endl; } }
C++语言程序设计 清华大学郑莉 自数组的存储顺序 数 数组元素在内存中顺次存放,它们的地址是连 续的 例如:具有10个元素的数组a,在内存 组 中的存放次序如下: a a[0] a[1] a[2] a[3] a[4] a[5] a[6]a[7] a[8] a[9] 数组名字是数组首元素的内存地址。 数组名是一个當量,不能被赋值
C++语言程序设计 清华大学 郑莉 6 一维数组的存储顺序 数组元素在内存中顺次存放,它们的地址是连 续的。 例如:具有10个元素的数组 a,在内存 中的存放次序如下: 数组名字是数组首元素的内存地址。 数组名是一个常量,不能被赋值。 a a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 数 组
C++语言程序设计 清华大学郑莉 维数组的初始化 可以在编译阶段使数组得到初值: 数 在声明数组时对数组元素赋以初值。 组例如: static int a10}={0,1,2,3,4,56,7,8,9} 可以只给一部分元素赋初值 例如: static int a[10]={0,1,2,3,4} 在对全部数组元素赋初值时,可以不指定数 组长度 例如: static int a={1,2,34,5} 7
C++语言程序设计 清华大学 郑莉 7 一维数组的初始化 可以在编译阶段使数组得到初值: – 在声明数组时对数组元素赋以初值。 例如:static int a[10]={0,1,2,3,4,5,6,7,8,9}; – 可以只给一部分元素赋初值。 例如:static int a[10]={0,1,2,3,4}; – 在对全部数组元素赋初值时,可以不指定数 组长度。 例如:static int a[]={1,2,3,4,5} 数 组
C++语言程序设计 清华大学郑莉 例:用数组来处理求 Fibonacci数列问题 Include using namespace std; void maino i int i; static int f20]={1,1};∥初始化第01个数 for(i=2;20;++)f=ff-2]+ft-11;∥求第2~19个数 fofr(i=0;20;+)∥输出,每行5个数∥ tif(i%5==0)cout≤end cout width(12);∥设置输出宽度为12 cout<≤f 8
C++语言程序设计 清华大学 郑莉 8 #include using namespace std; void main() { int i; static int f[20]={1,1}; //初始化第0、1个数 for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; //求第2~19个数 for(i=0;i<20;i++) //输出,每行5个数// { if(i%5==0) cout<<endl; cout.width(12); //设置输出宽度为12 cout<<f[i]; } } 例:用数组来处理求Fibonacci数列问题
C++语言程序设计 清华大学郑莉 例:用数组来处理求 Fibonacci数列问题 运行结果: 8 13 21 34 89 144 233377610 9871597258441816765 9
C++语言程序设计 清华大学 郑莉 9 例:用数组来处理求Fibonacci数列问题 运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
C++语言程序设计 清华大学郑莉 维教组应用举例 数 循环从键盘读入若干组选择题答案 计算并输出每组答案的正确率,直到输 组入c+z为止 每组连续输入5个答案,每个答案 可以是"a'.'d。 10
C++语言程序设计 清华大学 郑莉 10 一维数组应用举例 循环从键盘读入若干组选择题答案, 计算并输出每组答案的正确率,直到输 入ctrl+z为止。 每组连续输入5个答案,每个答案 可以是'a'..'d'。 数 组