《数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt》由会员分享,可在线阅读,更多相关《数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt(32页珍藏版)》请在人人文库网上搜索。

1、C语言程序设计,第5章 数组,5.1 一维数组 5.2 二维数组与多维数组 5.3 字符与数组,什么是数组,数组:数组是一组有序数据的集合,数组中每一个元素的类型相同。用数组名和下标来唯一确定数组中的元素,5.1一维数组,5.1.1一维数组的声明 5.1.2一维数组元素的引用 5.1.3一维数组的赋值 5.1.4一维数组越界检查 5.1.5一维数组的应用举例,5.1.1一维数组的声明,定义方式: 类型说明符 数组名下标常量表达式 例、 int a10 定义一个数组,数组名a,有10个元素,每个元素的类型均为int。 这10个元素分别是:a0、a1、a2、a3、a4、.、a8、a9。 注意: (。

2、1)C语言中,数组下标从0开始. (2)C语言不允许对数组的大小做动态定义,如: int n; scanf(%d, 因为,在编译时,C编译器根据已知数组大小分配内存。 例5.1源程序,5.1.2 一维数组元素的引用,C语言规定,不能引用整个数组,只能逐个引用元素,元素引用方式: 数组名下标 例、 a0 = a5 + a7 - a2*3,5.1.2一维数组元素的引用,使数组元素a0a9的值为09,然后逆序输出。 main () int i,a10; for (i=0;i=0; i-) printf(“%d ”,ai); 运行输出: 9 8 7 6 5 4 3 2 1 0,5.1.3 一维数组的赋。

3、值,初始化:在定义时指定初始值,编译器把初值赋给数组变量。 赋值:使用赋值语句,在程序运行时把值赋给数组变量,如a0 = 2。 1、一般初始化,例、 static int a10 = 0,1,2,3,4,5,6,7,8,9; int array10 = 1,2,3,4,5,6,7,8,9,10; 2、部分元素初始化,例、 static int a10 = 0,1,2,3,4; 仅前5个元素赋初值,后5个元素未指顶初值。 3、全部元素均初始化为0,不允许简写。 static int a10 = 0,0,0,0,0,0,0,0,0,0; 不能简写为: static int a10 = 0*10,5。

4、.1.3 一维数组的赋值,注意:当程序不给数组指定初始值时,编译器作如下处理: (1)编译器自动把静态数组的各元素初始化为0。 (2)编译器不为动态数组自动指定初始值。 4、如果全部元素均指定初值,定义中可以省略元素的个数,例、 static int a5 = 1,2,3,4,5; 可以写为: static int a = 1,2,3,4,5; 例5.2 求10个元素的最大值,5.1.4一维数组越界检查,C语言并不检验数组边界 在程序中最好还是加上数组越界检查程序代码,5.1.5 一维数组程序举例,用数组来处理Fibonicci数列的前20项。 F1 = 1 n = 1 F2 = 1 n = 。

5、2 Fn = Fn-1 + Fn-2 n 3 程序: main () int i; static int f20 = 1,1; /* f1、f2已知 */ for(i=2; i20; i+) fi = fi-1 + fi-2; for(i=0; i20; i+) if (i%5 = 0) printf(n); printf(%12d,fi); 例5.3源程序,5.1.5 一维数组程序举例,例5.4 输入10个数,用“冒泡法”对10个数排序(由小到大)。 “冒泡法”算法:以六个数9、8、5、4、2、0为例。 第1趟比较(图5-1) 第2趟比较(图5-2) 第1趟比较后,剩5个数未排好序; 两两比。

6、较5次 第2趟比较后,剩4个数未排好序; 两两比较4次 第3趟比较后,剩3个数未排好序; 两两比较3次 第4趟比较后,剩2个数未排好序; 两两比较2次 第5趟比较后,全部排好序; 两两比较1次 算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较,5.1.5 一维数组程序举例,图5-1,图5-2,5.1.5 一维数组程序举例,程序流程图:(用两层嵌套循环实现 例程5.4 例程5.5输入若干个0-9之间的数,统计各整数的个数,5.2 二维数组与多维数组,5.2.1二维数组的声明与初始化 5.2.2二维数组的表示方法 5.2.3多维数组 5.2.4二维数组的应用举例,5。

7、.2.1二维数组的声明与初始化,一般形式: 类型说明符 数组名常量表达式常量表达式 例、 float a34; a为34(3行4列)的数组 float b510; b为510(5行10列)的数组,5.2.1二维数组的声明与初始化,二维数组的理解: 二维数组a34理解为: 二维数组的元素在内存中的存放顺序: 按行存放,即:先顺序存放第一行的元素,再存放第二行的元素。(最右边的下标变化最快,第一维的下标变化最慢,5.2.1二维数组的声明与初始化,1、分行赋值,如、 static int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 2、全部数据写在一个大括号内,如、 stat。

8、ic int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 3、部分元素赋值,如、 static int a34 = 1,5,9; 仅对a00、a10、a20赋值,其余元素未赋值(对于静态数组,编译器自动为未赋值元素指定初值0;对于动态数组,未赋值元素的初值是随机的)。 4、如果对全部元素赋初值,则第一维的长度可以不指定,但必须指定第二维的长度。例、 static int a34=1,2,3,4,5,6,7,8,9,10,11,12; 与下面定义等价: static int a 4=1,2,3,4,5,6,7,8,9,10,11,12,5.2.2二维数组元素的表示方法,用。

9、数组名和下标引用元素。例、 float a23; 有6个元素,按如下方式引用各元素: a00、a01、a02、a10、a11、a12 注意:数组float a23中无元素a23。(下标从0始) 例5.6源程序 例5.7源程序,5.2.3多维数组,在学习了一维数组和二维数组之后,不难发现: 提高数组的维数,只需要在声明数组的时候将下标和方括号”再加一组就可以了. 三维数组:float a234在内存中的存放顺序: a000a001a002a003 a010a011a012a013 a020a021a022a023 a100a101a102a103 a110a111a112a113 a120a12。

10、1a122a123 例5.8源程序,5.2.4二维数组的应用举例,例5-9 将一个二维数组的行和列互换,存放到另一个二维数组中. 例5-10 编写程序,打印出所给形式的杨辉三角. 例5.11源程序 例5.12源程序,5.3字符与数组,5.3.1字符型数据 5.3.2一维字符数组的声明及初始化 5.3.3一维字符数组的输入与输出 5.3.4二维字符数组 5.3.5字符串处理函数 5.3.6字符数组程序举例,5.3.1字符型数据,字符型数据包括字符常量、转义字符常量、字符串常量、字符变量和符号常量。 字符常量:由单引号括起的单个字符。如:a,A,G,?。 转义字符常量:以反斜杆开头的特殊字符序列。。

11、意思是把反斜杆后面的字符序列转换成特定的含义,而不是原来的含义。 例如:n表示换行,而不是小写字母n。r表示回车;b表示退格;表示等等。 字符串常量:用双引号括起来的字符序列。例如,China,12234等。字符串常量的长度没有限制,系统在字符串的末尾自动加上0 ,以示字符串的结束。 字符变量:存放字符常量的内存变量。字符变量用关键字char来说明。可以在定义字符变量的同时进行初始化。 符号常量:以指定的符号代表其后的一串字符。用于简化程序的编写和修改,5.3.2一维字符数组的声明及初始化,字符数组: 存放字符数据的数组,每一个元素存放一个字符。 char c10; /* 定义c为字符数组,包。

12、含10个元素 */ c0=I; c1= ; c2=a; c3=m; c4= ; c5=h; c6=a; c7=p; c8=p; c9=y,5.3.2一维字符数组的声明及初始化,1.逐个元素初始化 static char c10 = I, ,a,m, ,h,a,p,p,y; 2.初始化数据少于数组长度,多余元素自动为“空”(0,二进制0)。 3.指定初值时,若未指定数组长度,则长度等于初值个数。 static char c = I, ,a,m, ,h,a,p,p,y,5.3.2一维字符数组的声明及初始化,字符数组的引用 引用一个元素,得到一个字符。 例 输出一个字符串。 main () stat。

13、ic char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n); 输出结果: I am a boy,5.3.3一维字符数组的输入与输出,1、用“%c”格式符逐个输入输出。 2、用“%s”格式符按字符串输入输出。例、 static char c6; scanf(%s,c); printf(%s,c); 注意: (1)输出时,遇0结束,且输出字符中不包含0。 (2)“%s”格式输出字符串时,printf()函数的输出项是字符数组名,而不是元素名。 static char c6 = China; pri。

14、ntf(%s,c); printf(%c,c0); printf(%s,c0); (3)“%s”格式输出时,即使数组长度大于字符串长度,遇0也结束。例、 static char c10 = China; printf(%s,c); /*只输出5个字符 */ (4) “%s”格式输出时,若数组中包含一个以上0,遇第一个0时结束。 (5)输入时,遇回车键结束,但获得的字符中不包含回车键本身(0 x0D,0 x0A),而是在字符串末尾添0。因此,定义的字符数组必须有足够的长度,以容纳所输入的字符。(如,输入5个字符,定义的字符数组至少应有6个元素,5.3.3一维字符数组的输入与输出,6)一个scan。

15、f函数输入多个字符串,输入时以“空格”键作为字符串间的分隔。 static char str13; scanf(%s,str); 输入:How are you? 结果:仅“How”被输入数组str 如要想str获得全部输入(包含空格及其以后的字符),程序应设计为: static char c13; int i; for(i=0;i13;i+) ci = getchar(); (7) C语言中,数组名代表该数组的起始地址,因此,scanf()函数中不需要地址运算符 在Turbo C中,加上 printf、puts均以0结尾. printf(%sn,c); printf需要格式控制符%s puts。

16、(c); puts不需要格式控制符,且自动换行 2、gets()函数:输入字符串到数组。例、 static char str12; gets(str); 注意:gets()、puts()一次只能输入输出一个字符串。而scanf()、printf()可以输入输出几个字符串。 3、strcat():连接字符串。 strcat(字符串1,字符串2); 把“字符串2”连接到“字符串1”的后面,5.3.5字符串处理函数,4、strcpy():字符串拷贝。 strcpy(字符串1,字符串2); 把“字符串2”的值拷贝到“字符串1”中 5、strcmp():字符串比较。 比较“字符串1”、“字符串2”,例、 strcmp(str1,str2); strcmp(China, Korea); strcmp(str1, Beijing); 比较规则:逐个字符比较ASCII码,直到遇到不同字符或0,比较结果是该函数的返回值。 6、strlwr():将字符串中的大写字母转换为小写字母(lwr:lowercase小写)。 7、strupr():将字符串中的小写字母转换为大写字母(upr:uppercase大写)。 注意:以上函数均是库函数,使用时必须用#include语句包含头文件,5.3.6字符数组程序举例,例5.16不使用字符串比较函数strcmp,自编程序,实现两个字符串s1、s2的比较。

c语言不允许对数组的大小做动态定义,数组,C语言程序设计课件,与中南大学出版社教材相配套.ppt...相关推荐

  1. c语言不允许对数组大小作动态定义,c语言第07章数组.ppt

    第七章,数组,问题:给一组数排序,这组 数该 如何存放呢,??? 这些数据如何存放才便于排序,,1,8,8,8,8,8,8,8,8,8,8,1,,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ...

  2. mysql中声明数组_SQL数据库中怎么定义数组

    static void Main(string[] args) { int[] numArr = new int[10];//定义数组 Console.WriteLine("请输入10个数: ...

  3. javascript 中数组的部分内容(定义数组)

    数组也是一种对象,这种对象被称为数组对象,每一个数组元素都有一个索引号,通过索引号可以方便的引用数组数据. 数组是唯一的 在javascript中存储和操作有序数据集的数据结构. 这里定义数组的方式 ...

  4. 如何使用C语言动态定义数组长度

    问题提出 在平时写程序的时候,经常遇到这样的场景,程序需要输入一个长度为n的数组,但是n是一个变量.在java中,我们可以这样直接定义: int n = scanner.nextInt(); int[ ...

  5. java返回下标数组_JAVA一维数组判断大小,并返回数组下标

    展开全部 代码如下: /** * */ package owner; import java.util.ArrayList;import java.util.List; /** * @author G ...

  6. c语言编程 验证用户名和密码是否正确(函数定义),《C语言程序设计教程》习题参考答案[精品资料].doc...

    <C语言程序设计教程>习题参考答案[精品资料] <C语言程序设计教程>习题参考答案 默认分类 2007-09-10 12:38:44 阅读6618 评论13 ??字号:大中小? ...

  7. cdr vb 动态定义数组 遍历对象里面包含群组的

    Function 显示内容() Dim s As Shape Dim sson As Shape Dim ison As Integer Dim flag As Boolean Dim al As I ...

  8. c语言定义数组a10 指定各元素,C语言填空题.doc

    C语言填空题.doc 二.填空题1.C 语言只有 32 个关键字和 9 种控制语句.2.每个源程序有且只有一个 main 函数,系统总是从该函数开始执行 C 语言程序. 3.C 语言程序的注释可以出现 ...

  9. c语言不能在函数中求数组大小,C语言中数组长度不能用变量定义吗?

    翻翻过去那场雪 1.C语言中不支持.C++中支持变长数组(你可以自行度娘变长数组和alloca函数),但是因为其实在栈上分配,不被推荐使用.做为解决方案,你可以使用C式的malloc函数或者C++式的 ...

最新文章

  1. poj3686(最小权值完美匹配)
  2. Dottrace 10.0.2 使用心得
  3. IEEE802.11e EDCA 中TXOP机制的分析与改进
  4. xml simpleXML_load_file(), simpleXML_load_string()
  5. outlook vba开发要点
  6. SAP Spartacus里的injector
  7. 泰坦尼克数据集预测分析_探索性数据分析-泰坦尼克号数据集案例研究(第二部分)
  8. 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
  9. 使用神经网络自动提取出它的特征码(1)
  10. Nunit中如何进行事务性单元测试
  11. 笔记本安装ubuntu出现wifi已通过硬件开关禁用解决方法
  12. 高分三号卫星相关知识
  13. 东软实训告诉你:职场上不该说的13种话
  14. php读取路由器arp表,详解ARP地址解析协议的工作流程
  15. 计算机如何添加usb平板电脑,平板电脑没有usb接口怎么办
  16. 阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
  17. [HTML] HTML简单实现网络测速
  18. 用js写一个倒计时表
  19. Vue全家桶学习笔记:Vue Router篇
  20. STM32Cube程序使用 DFU 烧写后Leave DFUMode无法运行程序

热门文章

  1. ELI5 和scikit-learn文本分类管道
  2. 谷歌自锤Attention:纯注意力并没那么有用,Transformer组件很重要
  3. 直播 | EMNLP 2020论文解读:从上下文学习还是从实体名字学习?
  4. 直播预告 | 小米人工智能部崔世起:小爱同学全双工技术实践
  5. 当前最好的非深度迁移学习方法:流形空间下的分布对齐
  6. Python SQLAlchemy入门教程
  7. 卷积神经网络训练的三个概念(Epoch,Batch,Iteration)
  8. js md5加密脚本
  9. 手把手带你领略双十一背后的核心技术Sentinel之热点参数限流
  10. webflux切面拦截权限,webflux整合aop,webflux获取request