ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:26.39KB ,
资源ID:22333884      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22333884.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中央电大C语言A课程辅导Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中央电大C语言A课程辅导Word格式文档下载.docx

1、类型关键字数组名 =; 类型关键字为已存在的一种数据类型。数组名是用户定义的一个标识符,用它来表示一个数组。常量表达式只能是通过#define命令定义的符号常量,不能是通过const语句定义,常量表达式的值是一个整数,由它标明该一维数组的长度,即数组中所含元素的个数。每个元素具有类型关键字所指定的类型。初值表是用逗号分开的一组表达式,每个表达式的值将被依次赋给数组中的相应元素。 一维数组的存储空间分配 一个数组被定义后,系统将在内存中为它分配一块能够存储n个数据元素的存储空间,其中n为数组长度。所以数组所占用的存储空间的字节数应等于元素的个数n乘于元素类型的长度。如对于一个含有10个int型元

2、素的数组,它将对应10*4=40个字节的存储空间。 一维数组定义举例 (1) int a20; /定义整型数组a,含20个int元素,a0-a19 (2) double bMS; /假定MS为已定义的符号常量,b0-bMS-1 (3) int c5=1,2,3,4,0; /c0=1,c1=2,c2=3,c3=4,c4=0 (4) char d=a,bcd; /d0=,d1=,d2=,d3= (5) int e8=1,4,7; /e0=1,e1=4,e2=7,e3-e7=0 (6) char f10=BASIC /f0=,.,f5-f9=0,0 (7) float h15, h210; /定义2

3、个单精度数组 (8) short int x=1, y=2, z, w4=25+x, -10, x+2*y, 44; /既定义有简单变量,又定义有数组,w0=26,w1=-10,w2=5 一维数组元素的访问定义了一个数组,就相当于同时定义了它所含的每个元素。数组中的每个元素又称为下标变量,是通过下标运算符(即一对中括号)来指明和访问的,具体格式为:中括号运算符内的表达式称为下标表达式,下标表达式的值称为该元素下标。表面上看,这与数组的定义格式类似,但它们出现的位置是不同的,当出现在变量定义语句时则为数组定义,而当出现在一般表达式中时则为一个元素。 假定an为一个已定义的数组,则下面都是访问该数

4、组的每个元素(下标变量)的合法格式: (1) a5 /下标为一个常数5 (2) ai /下标为一个变量i (3) aj+ /下标为后增1表达式j+,若j=3,则为元素a3 (4) a2*x+1 /下标为一般表达式2*x+1,若x=3,则为元素a7 使用一维数组的程序举例程序1: #include void main() int i, a6; printf(从键盘输入6个整数: ); /提示信息 for(i=0;i=0;i-) printf(%d ,ai); /按相反次序输出元素值n 若程序运行时,从键盘上输入3、8、12、6、20和15这6个常数,则得到的输入和运行结果为: 3 8 12 6

5、20 15 /a0-a5 15 20 6 12 8 3 /a5-a0程序2: #define M 10 /符号常量M为10 int i, aM+1; /定义数组a11 a0=1; a1=2; for(i=2; i =,.; 常量表达式1指定该数组的行数,行下标的取值范围是0-常量表达式1的值减1,常量表达式2指定该数组的列数,列下标的取值范围是0-常量表达式2的值减1。假定常量表达式1和常量表达式2的值分别为m和n,则行下标的取值范围是0m-1之间的m个整数,列下标的取值范围是0n-1之间的n个整数。 如假定一个整型二维数组a的定义为: int a34; 则所包含的全部12个元素如下: a00

6、 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 二维数组中元素的个数二维数组中所包含的元素个数又称为该二维数组的大小,它等于该二维数组的行数和列数的乘积。如: int a105; /个数:10*5=50 double a58;5*8=40 char a5M+1;5*(M+1) 存储空间分配 系统给一个二维数组中的所有元素分配存储空间时,是首先按行下标从小到大的次序,行下标相同时再按列下标从小到大的次序进行的。例如,若定义了一个double型的二维数组cMN,则c00元素占有整个数组存储空间的第1个数据单元,c01元素占有整个数组存储空间的第2个数据单元

7、,cij元素占有整个数组存储空间的第i*N+j个数据单元。每个数据单元所包含的字节数有数据类型决定。 格式举例: (1) int a33; /3行3列共9个整数类型的元素 (2) double bMN; /假定M和N为已定义的整型常量,共MN个元素 (3) int c24=1,3,5,7,2,4,6,8; /定义并初始化 (4) int d3=0,1,2,3,4,5,6,7,8; /省略行下标的上限,9元素 (5) int e34=0,1,2; /位被初始化的元素自动为0 (6) char g10,h105; /定义一维和二维字符数组g和h 二维数组元素的表示和访问行下标表达式 数组元素又称下

8、标变量,二维数组元素带有两个下标,又称双下标变量,每个下标分别用中括号括起来。每个下标可以是常量,也可以是变量、函数或表达式。 (1) int a45; /定义二维数组a (2) a12=6; /向a12元素赋值6,每个下标为常量 (3) a22=3*a12+1; /取出a12的值6参与运算, /把赋值号右边表达式的值19赋给a22元素中 (4) aij-1=aij; /下标变量赋值,下标为变量或表达式 (5) printf(,a12*a22-3); /输出表达式的值111到窗口 遍历二维数组就是先按行从小到大,再按列从小到大的次序依次访问每个元素。例如:int i,j,aMN;for(i=0

9、; i+) /行下标依次递增for(j=0; jN; j+) /列下标依次递增s+=aij; /所有元素值被累加到s中 使用二维数组的程序举例 int b25=7,15,5,8,20,12,25,37,16,28;/定义和初始化 int i,j,min=b00; /给min赋初值为数组的第1个元素值72; i+) /外循环变量i依次取0,1,2 for(j=0;5; j+) /内循环变量j依次取0,1,2,3,4 if(bijmin) min=bij; /比较每个元素,小者赋min,min); /输出min的值为5程序功能:从数组b25中求出所有元素的最小值并输出。 #define M 4 /

10、定义符号常量M为4 int cM=0; /定义一维整型数组c4并初始化为0 int dM3=1,5,7,3,2,10,6,7,9,4,3,7; /定义二维整型数组d43并初始化 int i,j,sum=0; /求和变量sum被初始为0 i+) 3; j+) ci+=dij; /d中每行元素值被累加到ci sum+=ci; /c中所有元素值被累加到sum中 i+) printf(,ci); /依次输出13 15 22 14,sum); /输出64 1. 一维数组类型的定义语句 一维数组类型的定义语句的格式: typedef 数组类型名; 格式举例: (1) typedef int Vector1

11、0; / 定义Vector为包含10个int元素 /的一维数组类型:int10,若用Vector a; 则等价于int a10; (2) typedef char Strings80; / 定义Strings为包含80个字符元素char80,若用Strings nc; 则等价于char nc80; (3) typedef short int ArrayN; /定义Array为包含N个短整型元素 /的一维数组类型,若用Array d=2,4; 则等价于short int dN=2,4; 2. 二维数组类型的定义语句 二维数组类型的定义语句的格式:元素类型 (1) typedef int Matr

12、ix55; / 定义Matrix为包含55的二维 /整型数组类型:int55,若用Matrix a; 则等价于int a55; (2) typedef double DataTypeM+1N+1; /定义DataType为包含 /(M+1)(N+1)个双精度元素的二维数组类型,若用 /DataType sd=0; 则等价于double sdM+1N+1=0; 3. 对已有类型定义别名 利用typedef语句不仅能够定义数组类型,而且能够对已有类型定义出另一个类型名,以此作为原类型的一个别名。 (1) typedef int inData; /定义inData为int的别名, /若用inData

13、 a=5; 则等价于int a=5; (2) typedef char ElemType; /定义ElemType为char的别名, /若用ElemType b8= b 则等价于char b8= (3) typedef char* chPointer; /定义chPointer为字符指针类型, /若用chPointer px=&x; 则等价于char* px=& 小节:一维数组、二维数组、定义数组类型这一讲就到这里,同学们再见! 1. 数值计算 利用一维或二维数组存储具有一维(向量)结构的数据或二维(矩阵、表格)结构的数组,然后按照一定的规则进行相应的计算。 举例:已知有两个数值矩阵A和B,编

14、一程序计算出它们的和。 7 -5 3 3 6 -9 A= 2 8 -6 B= 2 -8 3 1 -4 -2 5 -2 -7 分析:由数学知识可知,行数和列数分别对应相同的两个矩阵可以做加法,它们的和仍为一个矩阵,并且与两个加数矩阵具有相同的行数和列数。在此题中的两个矩阵均为3行3列,所以它们的和矩阵同样为3行3列。 两矩阵加法运算的规则是:求和矩阵中每个元素的值等于两个加数矩阵中对应位置上的元素值之和,即Cij=Aij+Bij,其中A和B表示两个加数矩阵,C表示它们的和矩阵。 在编写的程序中,首先应定义三个二维数组,假定分别用标识符a、b和c表示,它们分别对应A、B和C这三个矩阵,并需要根据A

15、和B的数据对a和b进行初始化;接着根据a和b计算出c;最后按照矩阵的行列结构输出二维数组c,它就是对应的矩阵C。 根据分析编写出程序如下: #define N 3 /定义矩阵的大小 int aNN=7,-5,3,2,8,-6,1,-4,-2; /用a保存矩阵A int bNN=3,6,-9,2,-8,3,5,-2,-7; /用b保存矩阵B int cNN; /用c保存求和结果,即矩阵C int i,j; /用i和j分别作为行、列循环变量 i+) /计算矩阵C j+) cij=aij+bij; i+) /输出矩阵C%5d,cij); /每个数值占5个字符位置 /每行数据后输出一个换行 该程序运行

16、时得到的输出结果如下: 10 1 -6 4 0 -3 6 -6 -9 2. 统计 利用一维数组中的每个元素作为统计(计数)变量,统计出相应区间内数据的个数,然后在输出统计结果。 举例:假定需要对某个地区职工的工资状况进行调查,把工资划分为11个区段,每隔1000为一个区段,即0999.99(不含0)为第1区段,10001999.99为第2区段,依次类推,90009999.99为第10区段,10000及以上为第11区段。编一程序,首先把调查得到的一批职工的工资数据输入到一个数组中,然后分别统计出每个区段内的职工人数及占总职工数的百分比。由题意可知,职工工资的统计区段共11个,为此定义一个统计数组

17、,假定用c11表示,用它的第1个元素c0统计工资在0999.99区段内(不含0)的职工数,用它的第2个元素c1统计工资在1000.001999.99区间内的职工数,依次类推,用它的第11个元素c10统计工资在10000及以上区段内的职工数。另外,还需要设置一个保存所有职工工资的数组,假定为aNum,用来最多保存Num个职工的工资,Num为一个符号常量。 在程序中,首先定义数组aNum并为它最多输入Num个工资数据,若工资小于0则结束输入;接着定义数组c11并初始化每个元素值为0;然后依次读取a数组中的每个元素值,通过对1000整除确定出相应的统计区段,使得统计数组c中相应的元素值增1;最后计算

18、出每个区段的统计结果的百分比并输出。stdlib.h #define Num 20 double aNum=0.0; /定义保存工资的数组数组a并初始化为0.0 int c11=0; /定义保存统计结果的数组c并初始化为0 int i=0,j; double x; /定义相应的简单变量输入一批职工的工资数据(小于等于0则结束): while(iNum) /通过循环为数组a输入数据 scanf(%lfx); if(x=0.0) printf(数据输入完毕! break; ai+=x;i; j+) /c中的相应下标变量的值加1,完成统计 int k=(int)aj/1000; /求出aj工资所在的

19、区间序号 if(aj10000) ck+; else c10+;10; j+) /输出前10个区间内的统计结果和百分比%8.2Lf-%8.2Lf:,j*1000.0,j*1000.0+999.99);%d, %5.2Lf%n,cj,cj*1.0/i*100); /输出最后一个区间内的统计结果和百分比10000.00及以上:,c10,c10*1.0/i*100); 3. 排序 排序就是对一组杂乱无章的数据进行有序排列的过程。首先把初始数据保存到一维数组中,然后按照一定的排序方法使数组中的数据值按下标次序排列有序,最后按下标次序输出结果。举例:已知有10个常数为42,65,80,74,36,44,

20、28,70,94,72,编一程序,采用选择排序的方法,按照从小到大的顺序排列并输出。首先需要把已知的10个常数存入到一维数组中,假定该数组被定义为a10;接着采用选择排序的方法对数组a10中的10个元素按照其值从小到大的顺序排序,使得元素值的排列次序与下标次序相同,即得到a0a1a2.a9;最后按照下标次序显示出每个元素的值,它们是按值的从小到大的次序排列的。具体排序过程:对数组a中的10个元素进行选择排序共需要进行9次选择和交换的过程,第1次从待排序区间a0a9中通过顺序比较选择出一个最小值元素,把它与该区间的第1个元素a0交换后,a0就成为所有10个元素中的最小值。0 1 2 3 4 5

21、6 7 8 942 65 80 74 36 44 28 70 94 72 /顺序比较查找出a6 最小值28 65 80 74 36 44 42 70 94 72 /a6与a0交换第2次从新的待排序区间a1a9中通过顺序比较选择出一个最小值元素,把它与当前区间的第1个元素a1交换后,a1就成为仅次于a0的最小值元素。28 65 80 74 36 44 42 70 94 72 /顺序比较查找出a428 36 80 74 65 44 42 70 94 72 /a4与a1交换同理,在从a2a9中通过顺序比较选择出一个最小值元素,把它与当前区间的第1个元素a2交换后,a2就成为仅次于a0和a1的最小值元素。28 36 80 74 65 44 42 70 94 72 /顺序比较查找出a628 36 42 74 65 44 80 70 94 72 /a6与a2交换,第3次28 36 42 44 65 74 80 70 94 72 /第4次结果28 36 42 44 65 70 80 74 94 72 /第5次结果 根据以上分析,编写出此题的完整程序如下: #define n 10 int an=42,65,80,74,36,44,28,65,94,72; void SelectSort() /选择排序算法 int i,j,k;n-1;i+) /进行n-1次选择和交换

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1