深入理解函数和二维数组

深入理解函数和二维数组

ID:34102229

大小:7.54 MB

页数:69页

时间:2019-03-03

深入理解函数和二维数组_第1页
深入理解函数和二维数组_第2页
深入理解函数和二维数组_第3页
深入理解函数和二维数组_第4页
深入理解函数和二维数组_第5页
资源描述:

《深入理解函数和二维数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机程序设计基础第8讲深入理解函数/二维数组沈瑜(010-62782951)shenyu@tsinghua.edu.cn清华大学电机系2014.11.21通知本周六(22日)晚7点-9点,期中测验,不得缺席!禁止作弊、抄袭!•允许带教材和指定参考书、课件、笔记•不允许携带打印的代码;•不允许从网络或邮件中下载代码;•不允许带手机、电脑;计算机程序设计基础2通知期中考试题型•笔试题(30分钟):1.阅读、填空题2.选择题3.徒手编程题(含流程图)•上机题(70分钟,视情况看要不要延时)1.编程题(4-5道)计算机程

2、序设计基础3主要内容CONTENTS1.函数的相关问题2.多维数组3.增量式开发4.函数的递归调用《C程序设计(第四版)》第6、7章《C语言程序设计:现代方法(第2版)》第8、9章计算机程序设计基础4前7讲回顾•程序构成–main函数、头文件、return语句•数据类型–int、float、char•表达式–算术、赋值、逗号表达式、scanf、printf•程序结构–顺序结构、选择结构、循环结构•一维数组、函数•深入学习:函数、二维数组计算机程序设计基础51关于函数使用的两个问题•问题1:函数只有一个返回值–若自己

3、编写数学函数,思路清晰floatf_result=my_sin(0.1);–若需要返回多个值,如何处理?•解决方案之一:改用全局变量•弊端:模块化效果不好计算机程序设计基础61关于函数使用的两个问题•问题2:关于全局变量和局部变量–变量尽可能不要重名。否则,可读性差–如果重名,注意“屏蔽”原则!计算机程序设计基础71关于函数使用的两个问题•推荐的编程习惯计算机程序设计基础81关于函数使用的两个问题•不好的缩进习惯•结构混乱•可读性差•期中考试会扣分计算机程序设计基础92二维数组1.复习一维数组#defineN10i

4、nta[N]={0,1,2,3,4,};左侧代码正确吗?for(inti=0;i<=N;i++)//错误的代码{1.i<=N越界a[i]*=2;2.b=a赋值错误}intb[10];b=a;计算机程序设计基础102二维数组使用数组时最严重、常见的错误——“下标越界”计算机程序设计基础111.二维数组2.复习字符数组右侧代码运行结果是什么?计算机程序设计基础122二维数组3.多维数组•数组可以有任意维数。–下图为一二维数组,数学上称为“矩阵”计算机程序设计基础132二维数组3.1多维数组定义–数据类型变量名[维度1]

5、[维度2];intm[5][9];计算机程序设计基础142二维数组3.2多维数组的存储第0行0001–intm[5][9]02030405060708第1行09先存第0行,再存第1行,…1011计算机程序设计基础152二维数组例1:多维数组的定义NOTICE!也不要把m[i][j]写成m[i,j],否则C语言会把逗号看成逗号运算符,因此,m[i,j]等同于m[j].除非包含在sizeof的操作数内(我们知道取字节表达式是常量表达式),常量表达式不应包含逗号运算符(当然还有赋值、自增自减、函数调用运算符)。计算机程序

6、设计基础162二维数组3.2多维数组的初始化u嵌套初始化的方式•完全初始化–inta[3][3]={{1,2,3},{2,3,1},{1,3,2}};•部分行初始化,不完全初始化–intb[3][3]={{1,2,3},{2,3,1},};•部分列初始化,不完全初始化–intc[3][3]={{1,2,3},{2,},{1,3,2}};u无嵌套完全(不完全)初始化–intd[3][3]={1,2,3,2,3,1,1,3,2};–inte[3][3]={1,2,3,2,3,1,};//后续元素初始化为0计算机程序设计

7、基础172二维数组例2:多维数组的初始化方法不推荐!可读性差。NOTICE!在定义多维数组的同时进行初始化计算机程序设计基础182二维数组3.3多维数组的使用例3:矩阵元素赋值•数组元素引用–数组名[下标1][下标2]•注意:数组下标从0开始程序实现了什么功能?运行结果:计算机程序设计基础192二维数组问题•intm1[5][9],m2[5*9]需要的存储空间一样多吗?计算机程序设计基础202二维数组第0行00m[0]0011022033044055•intm[5][9];•intm[5*9];066077088第

8、1行09m[9]910101111先行后列,顺序存储顺序存储计算机程序设计基础212二维数组第0行a[0]000x00acf6e00102030405060708第1行a[1]090x00acf7041011…44计算机程序设计基础222二维数组例4:矩阵相乘•求两个3×3矩阵的乘积nc[i,j]=*åA[i,,k]B[kj]k=1计算机程序设计基础232二

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。