版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——C语言数组教程C语言数组教程
引导语;数组是将一致数据类型的元素按确定依次排列的集合,以下是我共享给大家的C语言数组教程,接待阅读!
一、数组的声明
声明数组的语法为在数组名后加上用方括号括起来的维数说明。本接仅介绍一维数组。下面是一个整型数组的例子:
intarray[10];
这条语句定义了一个具有10个整型元素的名为array的数组。这些整数在内存中是连续存储的。数组的大小等于每个元素的大小乘上数组元素的个数。方括号中的维数表达式可以包含运算符,但其计算结果务必是一个长整型值。这个数组是一维的。
下面这些声明是合法的:
intoffset[5+3];
floatcount[5*2+3];
下面是不合法的:
intn=10;
intoffset[n];/*在声明时,变量不能作为数组的维数*/
二、用下标访问数组元素
intoffset[10];
说明该数组是一维数组,里面有10个数,它们分别为offset[0],offset[1],offset[9];千万留神,数组的第一个元素下标从0开头。一些刚学编程的人员经常在这儿犯一些错误。
offset[3]=25;
上面的例子是把25赋值给整型数组offset的第四个元素。
在赋值的时候,可以使用变量作为数组下标。
main
inti,offset[10];
fori=0;i10;i++scanf%d,offset[i];
fori=9;i=0;i--printf%d,offset[i];
printf\n;
题目的意思是先输入10个整数,存入到数组中,然后反序输出。
三、数组的初始化
前面说了,变量可以在定义的时候初始化,数组也可以。
intarray[5]=1,2,3,4,5;
在定义数组时,可以用放在一对大括号中的初始化表对其举行初始化。初始化值的个数可以和数组元素个数一样多。
假设初始化的个数多于元素个数,将产生编译错误;假设少于元素个数,其余的元素被初始化为0。
假设维数表达式为空时,那么将用初始化值的个数来隐式地指定数组元素的个数,如下所式:
intarray[]=1,2,3,4,5;
这也说明数组array元素个数为5。
main
inti,array[]=1,3,5,7,9,11;
fori=0;i5;i++printf%d,array[i];
printf\n;
最终结果为13579
四、字符数组
整数和浮点数数组很好理解,在一维数组中,还有一类字符型数组。
chararray[5]=H,E,L,L,O;
对于单个字符,务必要用单引号括起来。又由于字符和整型是等价的,所以上面的字符型数组也可以这样表示:
chararray[5]=72,69,76,76,79;/*用对应的ASCII码*/
举一个例子:
main
inti;
chararray[5]=H,E,L,L,O;
fori=0;i5;i++printf%d,array[i];
printf\n;
最终的输出结果为7269767679
但是字符型数组和整型数组也有不同的地方,看下面的`:
chararray[]=HELLO;
假设我们能看到内部的话,实际上编译器是这样处理的:
chararray[]=H,E,L,L,O,\0;
看上面结果一个字符\0,它是一个字符常量,TurboC编译器总是给字符型数组的结果自动加上一个\0,这是字符的终止标志。所以虽然HELLO只有5个字符,但存入到数组的个数却是6个。但是,数组的长度依旧是5。
inti;
i=strlenarray;/*求字符串的长度,在string.h里面*/
可以看出i依旧是5,说明结果的\0没有算。
#includestring.h
main
inti,j;
chararray[]=094387fdhgkdladhladaskdh;
j=strlenarray;
fori=0;iprintf\n;
其实我们可以根据判断\0来输出字符串,看下面的:
C语言数组教程
main
inti;
chararray[]=094387fdhgkdladhladaskdh;
fori=0;array[i]!=\0;i++printf%c,array[i];
printf\n;
举几个例子:
1.输入10个整数存入数组中,然后把它们从小到大排列并放在同一数组中。思路:先找出最小的,放在第一个位置,为了防止把原先的数笼罩掉,可以把原先的第一个数和最小数的位置互换。
main
intarray[10];
inti,j,min,stmp;
fori=0;i10;i++scanf%d,array[i];
fori=0;i9;i++
min=array[i];
forj=i+1;j10;j++
ifminarray[j]/*里面的4行语句很重要*/
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
fori=0;i10;i++printf%d,array[i];
printf\n;
分析:先让第一个值作为基准,假设后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换理应这样stmp=a;a=b;b=stmp;,而不是a=b;b=a;,想想这是为什么?务必要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。
2.输入一行字符存入数组,然后把他们反序存入到同一数组中。
#includestdio.h
main
charc,stmp,array[80];
inti=0,j;
whilec=getchar!=\n/*留神这儿的用法*/
array[i++]=c;
array[i]=\0;/*为什么要加\0?是否可以不加?*/
forj=i-1;j=i/2;j--
stmp=array[j];
array[j]=array[i-1-j];
array[i-1-j]=stmp;
fori=0;array[i]!=\0;i++printf%c,array[i];
printf\n;
3.一个已经排好序的数组,输入一个数,利用二分法把这个数从原数组中删除,数组依次保持不变。如原数组为1,3,5,7,9,11,13,15,17,19,待删除的数为13,那么输出为1,3,5,7,9,11,15,17,19。
二分法:每次都是判断中间的数是否得志要求,若得志那么删除,若不得志,那么把该数当作边界,然后再找中点。例如这一题,第一次的是10个数的中点,为11,察觉1113,那么找11-19的中点15,察觉1513,再找11-15的中点13,正好,那么删除。
main
intarray[10]=1,2,3,5,8,15,20,30,100,200;
intfirst=0,end=9,middle=first+end/2,num,i;
scanf%d,num;
whilearray[middle]!=num/*留神这里面的三行代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中秋节联欢会致辞范文(10篇)
- 九月大班上学期月计划范文(5篇)
- 中秋晚会董事长致辞范文(13篇)
- 曹植课件教学课件
- 讲师比赛课件教学课件
- 影响高中数学成绩的原因及解决方法
- 消费品和有关服务的比较试验 实施要求 编制说明
- 爱婴医院课件教学课件
- 南宫市八年级上学期语文10月月考试卷
- 八年级上学期语文期中考试卷
- JT-T 617.2-2018 危险货物道路运输规则 第2部分:分类 含2024年第1号修改单
- 2024年合肥兴泰金融控股(集团)有限公司招聘笔试冲刺题(带答案解析)
- 大学生职业生涯展示
- 《金属非金属地下矿山监测监控系统建设规范》
- 《中国慢性阻塞性肺疾病基层诊疗与管理指南(2024年)》解读
- 安全操作规程、作业指导书
- MOOC 软件安全之恶意代码机理与防护-武汉大学 中国大学慕课答案
- 档案工作协调机制
- 肝硬化门静脉高压食管胃静脉曲张出血的防治指南( 2022)
- 2023年1月自考00804金融法二试题及答案
- 赢利-未来10年的经营能力-读后感
评论
0/150
提交评论