




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9章数组举例:inta;floatb;doublec;charch;int定义4整型数;用float定义的变4个字节大小,只能放一个小数;用double定义的变量8个小数;char定义的变量1个字节大小只能放一个字符。综上所述intfloatdouble和char无论房间大小,都只能放一个数据。要想存放多个数、如何定义一个数一般形式类型组名[整型常举例int int总结⑴inta之间必须加空格,a和中括号之间了数组的大inta[3];中的3,就说明数组a有三个元素a[0]、a[1]a[2]因为数组a是用int定义的,所以a[0]、a[1]a[2]的房间都是4个字节大小,都只能放一个整数组元素都用下标加素的下标都0开始的下标比数组的实际长度1。⑷同类型的数组的元素和同类型的简单变量的房子是一样大小a[0]b的房⑸数组中每个房间放的数的类型都是一致int了数组a的三个房间a[0]a[1]a[2]中只中括号中必须为常量inta[3];或inta[1+2];都是合法的数组定义中括号中的数去决定但是数组在的时inta[3];scanf(“%d”,&分析:在语句inta[3];括号中的数去决定数语句scanf(“%d”,&a[i]);括号中的是应用数组而不是定义数要保证下不越界即可它只能指向数组本身int ↑a所以a等价于&a+1等价于&&
a+2等价于a+i等价于既然数组名是地常量a++;就是不合法因为a++;的化身是:a=a+1;而赋值的左侧只能是简单变、如何给数组初始⑴房间个数和人数一int数一致只需顺次赋值即可a[0]里面住1,a[1]里面2,a[2]里面住3。⑵房间多人少的情int系统自动补0。⑶房间少人多的情int解析:这种情况不允⑷根据人数定房间的inta[解析:在数组初始化括号中可以为据赋值的个数去决定比如:inta[]={1,2};其实就相当于inta[2]={1,2};有30个元素的int类型赋奇数1,3,5…,然后按每10个数顺序出,最后再按每行个数逆序输 {int}}(i%10==0)?‘’}解析①#defineM30它是命令行,不是C语的功能是定义了一个符号常量程序中M都可以替换30。程序中不直接用30而用符号M的②语句printf(“%4d”,s[i]);中的%4d是为了用空格③(i%10==0)?‘’这是一个条件表达达式1则取表达式2的值作为如果表达式1取表达式3的值作为整4、一维数组和数组元⑴数组名就是数组第举例:int 等价于&&
a+1等价于a+2等价于a+i等价于等价于解析:可用数组名加表达数组中不同元素⑶)}解析因为语p=a的执行,使得指针变量p指向了a数组的首地址,所以通过p++可以使指针变量p依次指向a数组中⑷数s[i]的表达形有以4种①②③④分析①s+i等价于&s[i],所以 等价*&s[i],而*和&是互逆运算,同时出现相互抵消*(s+i)与s[i]是完全等价的②在p=s;的条件下*(p+i)等价于*(s+i),*(s+i)s[i]所以*(p+i)s[i]p=s;的条件下,p[i]等价s[i]。9.2编写程序,通过一个函数给主函数中定义的数组输入干大于或等于0的整数,用负数作为输入结束标志;调用另一个函数输出该数组中 intarrin(int*);{ints[M],k;k=arrin(s);}intarrin(int{inti,x;}return}voidarrout(int*a,int{inti; }解析⑴语句#include<stdio.h>必须了printfscanf两个⑵#defineM100这个命令行的M,M就代100,所以程序中所有的M都是100的意思凡是#号开头的都不是C语句后不能加分⑶ intarrin(int这两条语句叫函数明语句,因为本程序是先写的main函数体,后写的函数定义部分,违背了“先定义后使用”的原则,所以必须要写上函数⑷语k=arrin(s);是main函数体中对arrin函数的调用形式,传递的实参是组名s,因为数组名就是数组的首地址,所以语k=arrin(s);等k=arrin(&s[0]);注意:如果实参是数组名,那么对应的形参应该是同类型的简单k=arrin(s中的实参s就传递给了intarrin(int*a)中的a⑸arrin的函数首部intarrin(int*a)还有①intarrin(inta[intarrin(inta[M])这三种函数首部虽定义了一个形式参数指针变量a主函数中传过来的它转化成intarrin(int*a)。intarrin(inta[])intarrin(inta[M])这两种形式中的a[和a[M]虽然貌似数组名,但实际不是,因为它们的最终变是*a这个指针变量,所以此处a++是合编写函数,对具有10个元素的char类型数组,从下标为4的元素开始,全部设置星号*保持前4个元素 {charc[M]={‘A’, ‘G’,‘H’,‘I’,} *a,int{inti;}}函数的指针形参和 {intreturnb;}{int}解析⑴函数首部*fun(inta[N],intn)中的inta[N还可以写成int*ainta[],无论写成那种形式,最终都会转化为int*a所以inta[N]中的a虽然貌似数组名,但不是数组名,而是一个指针变量,所以表达式a++是合法的。而fun函数体中的语句intb[N];是定义了一个整型数b,b为数组名,所以b是指针常量,不能进行++--操作,故b++、都是不合法的表达编写程序,定义一个含有15个元素的数组,并编写函数分别⑴调C库函数中的随机函数给所有元素0~49的随机⑵输出数组元素中的⑶按顺序对每隔三个数求一个和数,并传⑷最后输出所有求出#defineSIZE15#defineN voidpriarr(int*,int);getrand(x,SIZE); randomnumbers:\n”,priarr(x,SIZE);getave(x,w,SIZE);printf(“Output5sumpriarr(w,SIZE/N);} *a,int{int}voidgetave(int*b,int{int}}}voidpriarr(int*a,int{inti;}}解析⑴本程序用到了随机rand(),所以必须用#include命令把库文件stdlib.h包含进来。随机函数的用形式:rand()%x,功能是得到0到x-1的随机本题要求所有元素赋以0~49的随机数,所以写⑵如果实参是数组名,那么接收它的形参必须是同类型的指针变量。比如main函数体中的 SIZE);它所对应的getrand函数的首部是:voidgetrand(int*a,intn)getrand函数的调用过程就是把x的值传递给形参指针变量a,把实参SIZE的值传递给形参变量n。⑴如何定义一个二数组一般类型名数组名[表达1][表达式2]举例inta[0][0]a[0][1]a[1][0]a[1][1]①二维数组用两个二个是列必须分别写在两个②二维数组就是一列下标就是二维数a[2][3]的元素个数6个。③二维数组的下标是行下标还是列下标都是0开始以最后一个元素的行下标和列下标都比定义时的行数和列数1inta[2][3];a数组的第一个元素是:a[0][0]最后一个素是:a[1][2]④二维数组的所有数组元素放的值的类inta[2][3];a数组6个元素里都只能跟一维数组是一样⑤C语言中,可以把一个二维数组只不过每个数组元素又是包含有若干inta[2][3];a这个数组是由a[0]和而a[0]这一行又包括a[0][0]、a[0][1]a[0][2]a[1]a[1][0] 、a[1][2]成的⑥二维数组中的a[0]和a[1]都是地址,a[0]是第一行的首地址a[0][0]的地址a[0]等价于&a[0][0];a[1]是第二行的首地址,即a[1]等价于a[1][0]a[0]+1等价&a[0][1]a[1]+1&⑦二维数组名也是inta[2][3];a等价&a[0][0],所以a和都存放的是的地址值。所以a、a[0]和&a[0][0]是完⑧a[0]+1&a[0][1]a[1+1a[1][1]a[0]或a[1]加一个a+1等价于&a[1][0]数组名加一个数是让指针纵向移动。a+1就是让指针蹦a[0][0]指向了a[1][0]a+1等价于&a[1][0]。⑨a[i][j]的地址可以示成以下几种形式(1)&a[i][j]解析:这三种形式完全等表示a[i][j]的地址a[i]等价于&a[i][0],所以a[i]+j等价于&于形式(1)a+i等价于&a[i],所以*(a+i)*&a[i]a[i]。所以形式(3)等价于形式(2)⑩a[i][j]这个元素可以表示成以下几种形⑵二维数组的初始①int解析:每一对号都是给一行赋值②int解析:空余的房间 解析:二维数组的赋值也可以没有号,这样赋值是先满足前面123这三个值被赋到第一行,4、5被赋到第二行,而且第二行没有赋满值,故③a[解析:二维数组在赋初值的时候,行下可以省略不写,但是列下标绝对不能省略。这样赋值是根据列数和所赋值的个数例9.10通过键盘给2*3的二维数组输入3,第二行赋10、2030,然后按行输出此{inta[2][3],i,j; byline:\n”);;}}解析:无论给二维组赋值还是输出二维数组都要用到for环的嵌套,外层for循环是管行的,内层for循环是管列的。⑶如何定义一个指针举例:int解析:指针p有三个元素,分别是三个数组元素里可以放二维数组每一行的首地址 程序段的功能是:让a[0]、a[1]a[2]这三如果让指针数p指向二维数组a的话,a[i][j]这个元素可以表示成以下几种也可以表示⑷如何定义一个行指 如果让行指针p指向二维数组a的话,a[i][j]这个元素可以表示成以下几种形⑸二维数组名作为实参时实参和形参之间#defineM5#defineN3{double}fun函数的首部可以是以下三种形式之a[][N])总结:当二维数组名作为实参时,对应的形参必须是一个行指⑹指针数组作为实参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC TR 11801-9911:2024 EN Information technology - Generic cabling for customer premises - Part 9911: Guidelines for the use of balanced single pair applications within
- 【正版授权】 ISO/IEC 7816-3:2006/Amd 1:2025 EN Identification cards - Integrated circuit cards - Part 3: Cards with contacts - Electrical interface and transmission protocols - Amendment
- 【正版授权】 ISO 24477:2025 EN Vacuum technology - Vacuum gauges - Specifications,calibration and measurement uncertainties for spinning rotor gauges
- 幼儿法制安全教育课件
- 2关于开展2025年承诺既换证自查工作的方案
- 全国普通高等学校招生统一考试2025届高三第九次考试英语试题含解析
- 上海市杨浦区重点中学2025届初三下学期5月月考化学试题含解析
- 延津县2024-2025学年数学四年级第二学期期末经典试题含解析
- 福州软件职业技术学院《阿拉伯各国概况》2023-2024学年第二学期期末试卷
- 湖北省实验中学2024-2025学年高三4月暑期摸底考试数学试题试卷含解析
- 工程爆破实用手册
- 地基与基础分部工程验收报告
- 诗歌艺术手法:《扬州慢》【知识精讲+备课精研】 高二语文课内知识点拓展延伸(统编版选择性必修下册)
- GA/T 1509-2018法庭科学现场制图规范
- 临床医学概要课件
- 模板及支撑计算书
- 柔性电子技术与移动医疗课件
- 血液内科课件
- 惠州市火车西站分区规划
- 电信智慧家庭工程师3级认证考试题库-下(判断题大全)
- 再生混凝土课件
评论
0/150
提交评论