版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务一
使用一维数组一、定义一维数组1.数组的定义数组是一组有序数据的集合,数组中每一个元素的类型相同用数组名和下标来唯一确定数组中的元素。一维数组的定义格式为:类型说明符数组名[常量表达式],…;下一页返回任务一
使用一维数组2.说明(1)C语言中,数组下标从0开始。(2)常量表达式中可以包含数值常量和符号常量,不允许包含变量。既C语言不允许对数组的大小做动态定义,如:下面程序段中的数组常量n的使用方法是不允许的。
intn;
scanf(“%d”,&n);
inta[n];(3)C编译系统为数组在内存中按照元素的排列顺序开辟一片连续的存储单元,如引例中定义的数组a[10],其存储形式如图7-1所示。上一页下一页返回任务一
使用一维数组二、遍历一维数组
C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用形式为:数组名[下标表达式]三、初始化一维数组1.在编译阶段赋初值(1)对全部数组元素赋初值如:inta[6]={1,2,3,4,5,6};
数组元素的个数和花括号中初值的个数是相同的。并且从左到右花括号中初值依次赋给每个数组元素。即a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6。上一页下一页返回任务一
使用一维数组(2)可以只给一部分元素赋初值如:inta[10]={0,1,2,3,4};2.在运行阶段赋初值inta[10],i;for(i=0;i<10;i++)scanf(“%d”,&a[i]);3.注意事项当程序不给数组指定初始值时,编译器作如下处理:(1)编译器自动把静态数组的各元素初始化为0。(2)编译器不为动态数组自动指定初始值。(3)如果全部元素均指定初值,定义中可以省略元素的个数上一页下一页返回任务一
使用一维数组四、使用一维数组例7.4用数组来处理Fibonicci数列的前20项。F[1]=F[2]=1F[n]=F[n-1]+F[n-2](n≥3)程序如下:上一页返回下一页任务一
使用一维数组例7.5输入10个数,用“起泡法”对10个数由小到大排序“起泡法”算法分析:以六个数9、8、5、4、2、0为例。第1趟比较上一页下一页返回任务一
使用一维数组第2趟比较上一页下一页返回任务一
使用一维数组第1趟比较后,剩5个数未排好序;两两比较5次第2趟比较后,剩4个数未排好序;两两比较4次第3趟比较后,剩3个数未排好序;两两比较3次第4趟比较后,剩2个数未排好序;两两比较2次第5趟比较后,全部排好序;对于n个数的排序需进行n-1趟比较,第j趟比较需进行n-j次两两比较。“起泡法”排序N-S图如图7-2所示(用两层嵌套循环实现)。上一页下一页返回任务一
使用一维数组
设需排序的数有10个,定义数组大小为a[11],使用a[1]~a[10]存放10个数,a[0]不用。程序如下:上一页返回任务二
二维数组一、定义二维数组它的一般格式是:类型说明符数组名[常量表达式1][常量表达式2]
其实我们可以这样对二维数组理解,二维数组a[3][4]理解为:有三个元素a[0]、a[1]、a[2],每一个元素是一个包含4个元素的一维数组。如图7-3所示。二维数组的元素在内存中的存放顺序:按行存放,即:先顺序存放第一行的元素,再存放第二行的元素。如图7-4所示。(最右边的下标变化最快,第一维的下标变化最慢)。下一页返回任务二
二维数组二、遍历二维数组数组名[下标1][下标2]再如floata[2][3];有6个元素,按如下方式引用各元素:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]上一页下一页返回任务二
二维数组三、初始化二维数组
staticinta[2][3]={{1,2,3},{4,5,6}};是对数组的初始化,同样二维数组的初始化也可以分下面几种。1.分行赋值,例如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2.全部数据写在一个大括号内,例如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3.部分元素赋值,例如:inta[3][4]={{1},{5},{9}};4.如果对全部元素赋初值,则第一维的长度可以不指定,但必须指定第二维的长度。上一页下一页返回任务二
二维数组四、使用二维数组例7.7有一个3×4的矩阵,要求编程序以求出其中值最大的那个元素的值及其所在的行号和列号。其N-S图如图7-5所示。上一页下一页返回任务二
二维数组main(){inti,j,row=0,colum=0,max;staticinta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)/*用两重循环遍历全部元素*/for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d\n",max,row,colum);}上一页返回任务三
使用字符数组与字符串一、定义字符数组1.字符数组的定义我们知道数组分为整型,实型,字符型数组,整型,实型我们用过。所谓字符数组是指存放字符数据的数组,每一个元素存放一个字符。它的定义形式为:
char数组名[<常量表达式>]下一页返回任务三
使用字符数组与字符串2.字符数组的初始化字符数组的初始化同样分为以下几种。(1)逐个元素初始化(2)初始化数据少于数组长度,多余元素自动为“空”(‘\0’,二进制0)。(3)指定初值时,若未指定数组长度,则长度等于初值个数。3.字符数组的引用引用方法同整型数组,但引用一个元素,得到一个字符。上一页下一页返回任务三
使用字符数组与字符串二、使用字符串1.字符串的操作(1)C语言中,字符串作为字符数组处理。字符数组可以用字符串来初始化,例如:
staticcharc[]={"Iamhappy"};也可以这样初始化:(不要大括号)
staticcharc[]="Iamhappy";(2)字符串在存储时,系统自动在其后加上结束标志‘\0’(占一个字节,其值为0)。但字符数组并不要求其最后一个元素是‘\0’。上一页下一页返回任务三
使用字符数组与字符串2.字符串的输入输出(1)用“%c”格式符逐个输入输出。(2)用“%s”格式符按字符串输入输出。3.应用举例4.字符串函数在C的函数库中,提供了一些字符串处理函数。(1)puts()函数:输出字符串(以'\0'结尾)。(2)gets()函数:输入字符串到数组。例如:staticcharstr[12];gets(str);puts(str);上一页下一页返回任务三
使用字符数组与字符串(3)strcat():连接字符串。strcat(字符串1,字符串2);把“字符串2”连接到“字符串1”的后面。(4)strcpy():字符串拷贝。strcpy(字符串1,字符串2);把“字符串2”的值拷贝到“字符串1”中。(5)strcmp():字符串比较。intstrcmp(字符串1,字符串2);(7)strlwr():将字符串中的大写字母转换为小写字母(lwr:lowercase小写)。(8)strupr():将字符串中的小写字母转换为大写字母(upr:uppercase大写)。上一页返回任务四
数组作函数参数一、数组元素作为函数参数由于实参可以是表达式形式,数组元素可以是表达式的组成部分,因此,数组元素当然可以作为函数的实参,与用变量作实参一样,是单向值传递方式。二、数组名作函数参数可以用数组名作函数参数,此时实参与形参都应用数组名。下一页返回任务四
数组作函数参数1.引例【例7.12】有一个一维数组score,内放10个学生成绩,求平均成绩。floataverage(floatarray[10]){inti;floataver,sum=0;for(i=0;i<10;i++)sum=sum+array[i];aver=sum/10;return(aver);}main(){floatscore[10],aver;上一页下一页返回任务四
数组作函数参数inti;printf("Input10score:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver=average(score);printf("Averagescoreis%5.2f\n",aver);}上一页下一页返回任务四
数组作函数参数2.说明(1)用数组名作函数参数,应该在主调函数和被调用函数中分别定义数组,如,本例中array是形参数组名,score是实参数组名,分别在其所在函数中定义,不能只在一方定义。(2)实参数组与形参数组类型应一致,本例中都为float类型,如不一致,结果将出错。(3)实参数组和形参数组大小可以一致,也可以不一致,C编译系统对形参数组大小不做语法检查,只是将实参数组的首地址传递给形参数组。(4)形参数组也可以不指定大小,在定义数组时在数组名后面跟一对空的方括号,为了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年供应链风险评估及对策的建议函4篇范本
- 2026年白城市洮北区事业单位招聘工作人员(38人)笔试备考题库及答案详解
- 2026应急管理大学科研助理岗位招聘5人笔试备考题库及答案详解
- 职业卫生技术服务专业技术人员考试(职业卫生检测)模拟题库及答案(南通2026年)
- 2026四川省农业科学院园艺研究所蔬菜研究中心招聘科研助理1人笔试备考试题及答案详解
- 2026陕西榆林靖边县大学生到政府机关见习50人笔试模拟试题及答案详解
- 2026年绥化市北林区事业编单位人员招聘笔试模拟试题及答案详解
- 招5人!杂多县人民医院公开招聘5名合同制工作人员的笔试参考题库及答案详解
- 2026重庆三峡油漆股份有限公司招聘考试备考试题及答案详解
- 2026河北沧州市教育局公开招调教师30名考试备考试题及答案详解
- 《重点区域生态保护和修复工程建设投资估算指南(试行)》
- 油库安防施工方案(3篇)
- 国开《劳动与社会保障法》 试题及答案汇编
- GB/T 32994-2026水泥工业用回转窑
- 脑出血的血糖管理
- 2026年1月浙江省高考(首考)思想政治试题(含答案)
- 《急诊成人社区获得性肺炎临床实践指南(2024年版)》解读
- 新质生产力驱动下的产业创新机制研究
- 屋面防水层拆除施工方案
- WPS办公应用(中级)全套教学课件
- 2025中铁一局集团电务工程有限公司招聘22人笔试参考题库附带答案详解
评论
0/150
提交评论