C++语言程序设计 第大章数组指针与字符串 清华大学郑莉
第六章 数组 指针与字符串 清华大学 郑 莉 C++语言程序设计
C++语言程序设计 清华大学郑莉 本章主要内容 ●数组 。指针 ·动态存储分配 ●指针与数组 ●指针与函数 ●vector的基本用法 。字符串 ●深度探索
C++语言程序设计 清华大学 郑莉 2 本章主要内容 ⚫ 数组 ⚫ 指针 ⚫ 动态存储分配 ⚫ 指针与数组 ⚫ 指针与函数 ⚫ vector的基本用法 ⚫ 字符串 ⚫ 深度探索
C++语言程序设计 清华大学郑莉 数组的概念 数 数组是具有一定顺序关系的若干相 同类型变量的集合体,组成数组的变量 组 称为该数组的元素。 数组属于构造类型
C++语言程序设计 清华大学 郑莉 3 数组的概念 数组是具有一定顺序关系的若干相 同类型变量的集合体,组成数组的变量 称为该数组的元素。 数组属于构造类型。 数 组
C++语言程序设计 清华大学郑莉 维数组的声明与引用 ● 数 维数组的声明 类型说明符 数组名[常量表达式1: 组数组名的构成方法与一般变量名相同。 例如:inta[10]; 表示a为整型数组,有10个元素:a[0]..a[9] 。引用 必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[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一维数组的声明与3引用 数 #include using namespace std; int main() inta[10],b[1o]; 组 for(int i=0;i<10;i++){ ai=i*2-1: b[10-i-1]=a[i]; for(int i=0;i 10;i++) cout〈<"a[”(<i<"]= <a[i门(<"”" cout<"b[”<I〈<"j=”(<biij(<endl; return 0;
C++语言程序设计 清华大学 郑莉 5 例6. 1一维数组的声明与引用 #include using namespace std; int main() { int a[10], b[10]; for(int i = 0; i < 10; i++) { a[i] = i * 2 - 1; b[10 - i - 1] = a[i]; } for(int i = 0; i < 10; i++) { cout << "a[" << i << "] = " << a[i] << " "; cout << "b[" << I << "] = " << b[i] << endl; } return 0; } 数 组
C++语言程序设计 清华大学郑莉 维数组的存储顺序 数 数组元素在内存中顺次存放,它们的地址是连续的。 例如:具有10个元素的数组a,在内存中的存 放次序如下: 组 a[o]a[1]a[2]a[3]a[4a[5]a[6]a[7]a[8]h[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,5,6,7,8,9}: 可以只给一部分元素赋初值。 例如:static int a[10]={0,1,2,3,4}; 在对全部数组元素赋初值时,可以不指定数 组长度。 例如:static int a[]={1,2,3,4,5}
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; int mainO intf[20]={1,1};/初始化第0、1个数 for(inti=2;i<20;i++)//求第2~19个数 f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i+){/输出,每行5个数 if (i%5 ==0)cout <endl; cout.width(12);//设置输出宽度为12 cout <f[i]; return 0;
C++语言程序设计 清华大学 郑莉 8 #include using namespace std; int main() { int f[20] = {1,1};//初始化第0、1个数 for (int i = 2; i < 20; i++) //求第2~19个数 f[i] = f[i - 2] + f[i - 1]; for (i=0;i<20;i++) { //输出,每行5个数 if (i % 5 == 0) cout << endl; cout.width(12); //设置输出宽度为12 cout << f[i]; } return 0; } 例:用数组来处理求Fibonacci数列问题
C++语言程序设计 清华大学郑莉 例:用数组来处理求Fibonacci数列问题 运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
C++语言程序设计 清华大学 郑莉 9 例:用数组来处理求Fibonacci数列问题 运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
C++语言程序设计 清华大学郑莉 维数组应用举例 数 循环从键盘读入若干组选择题答案, 计算并输出每组答案的正确率,直到输 组 入ctrl+z为止。 每组连续输入5个答案,每个答案 可以是'a''d
C++语言程序设计 清华大学 郑莉 10 一维数组应用举例 循环从键盘读入若干组选择题答案, 计算并输出每组答案的正确率,直到输 入ctrl+z为止。 每组连续输入5个答案,每个答案 可以是'a'..'d'。 数 组