信息学奥赛课课通-第8单元 电子.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实践巩固 * PPT课件 第 3 课 指针与数组 学习目标 1. 理解数组指针。 2. 学会使用指针实现数组操作。 3. 学会使用指针实现字符串操作。 * PPT课件 指针与数组 在 C++ 中,数组名在一定意义上可以被看成指针。“数组的指针”是指整个数组在内存中的起始地址,“数组元素的指针”是指数组中某个元素所占存储单元的地址。一般可以使用“下标法”访问数组元素,如 a[5];也可以使用“地址法”访问数组元素,因为数组名就代表数组在内存中的起始地址,也就是 a [0] 的地址,如 a+4 就表示 a [4] 的地址;也可以通过“指针法”访问数组元素,通过数组的指针或者数组元素的指针访问数组元素,能使目标程序质量更高,占用内存更少,运行速度更快。 * PPT课件 例1、阅读并上机调试以下程序,体会数组的指针和数组元素的指针。 //p8-3-1 #includeiostream using namespace std; int main(){ int a[] = {10,11,12,13,14,15}; int *p = a+4; cout *a; cout “ “ *(a+3); cout “ “ *(++p) endl; return 0; } * PPT课件 【问题分析】 1)运行程序,输出“10 13 15”。 2)程序中直接拿数组名 a 当指针用。但是 a 始终是静态的,是不可变的,不能做“a = a+4;”运算,而指针可以做“++p”或“p = p+4;”运算。 3)语句“scanf ( “ %d “ ,n);”其实就是指针的意思。如果是数组,就不需要加取地址符“”。 * PPT课件 例2、阅读并上机调试以下程序,体会动态数组的定义和使用。 //p8-3-2 #includeiostream using namespace std; int main(){ int n,*a; cin n; a = new int [n]; // 申请 n 个连续的 int 类型内存空间(动态数组),并返回首地址给 a for(int i = 0; i n; i++) cin a[i]; for(int i = 1; i n; i++) a[i] += a[i-1]; for(int i = 0; i n-1; i++) cout a[i] “ “ ; cout a[n-1] endl; return 0; } * PPT课件 【问题分析】 1)运行程序,输入 10 及如下 10 个数“1 2 3 4 5 6 7 8 9 10”,输出“1 3 6 10 15 21 28 36 45 55”。 2)因为指针可以动态申请空间。那一次申请 100 个变量空间,系统给的地址是连续的,就可以当成数组使用,这就是“动态数组”的一种。 3)在信息学竞赛中遇到大批量数据的情况下,数组开小只能拿部分分,开大又可能爆空间,此时就可以定义和使用动态数组。 * PPT课件 例3、行列转换 【问题描述】 对于一个 n×m 的稀疏矩阵,按照行、列、值的格式读入 k 个元素(其他位置的值为 0),再输出这些数。 【输入格式】 第 1 行 3 个整数,表示 n、m 和 k,每两个数之间用一个空格隔开。 以下 k 行,按照“行优先(从上到下、从左到右)”的方式读入 k 个非 0 元素。每行 3 个数,依次为行号、列号、元素值,每两个数之间用一个空格隔开。 【输出格式】 输出k个数,按照“列优先(从左到右、从上到下)”的方式输出,每两个数之间用一个空格隔开。 【输入样例】 4 5 3 1 2 12 1 4 23 4 3 45 【输出样例】 12 45 23 * PPT课件 例4、阅读并上机调试以下程序,体会使用指针实现字符串的输入输出及存储。 //p8-3-4 #includeiostream #includecstring using namespace std; int main(){ char *s; s = new char; // 给 s 申请一个地址 cin s; // 输入字符串以空格或者回车结束 cout s endl; cout strlen(s); return 0; } * PPT课件 【程序说明】 运行程序,输入“hello world!”。 输出: hello 5 使用指针实现字符串的输入、输出及存储,与普通数组类似。只是在使用前一定要给字符串变量指定一个地址。 * PPT课件 例5、阅读并上机调试以下程序,体会使用指针实现字符串的复制。 //p8-3-5 #includeiostre

文档评论(0)

锦绣中华 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档