收藏 分享(赏)

C程序设计07.ppt

上传人:hskm5268 文档编号:12090138 上传时间:2021-09-05 格式:PPT 页数:32 大小:1,011.50KB
下载 相关 举报
C程序设计07.ppt_第1页
第1页 / 共32页
C程序设计07.ppt_第2页
第2页 / 共32页
C程序设计07.ppt_第3页
第3页 / 共32页
C程序设计07.ppt_第4页
第4页 / 共32页
C程序设计07.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、2020/7/9,第七章 数 组,1,第七章 数 组,一维数组的定义和引用 二维数组的定义和引用 字符数组,2020/7/9,第七章 数 组,2,数 组,案例1:键盘输入100个整数并存储,然后输出 如:int a1, a2, a3, a4a100; C语言中,相同类型数据可以组成数组 使用数组的优点: 1、一次定义若干变量 如:int a100; 2、操作灵活、简单 如:for(i=0;i=99;i+) ai=0;,2020/7/9,第七章 数 组,3,第一节 一维数组的定义和引用,数组的定义: 类型说明符 数组名常量表达式 如: int a10; char c20; 说明: 1、数组名的命

2、名同变量 2、 中表达式的值表示数组元素的个数 3、数组元素的下标从0开始,2020/7/9,第七章 数 组,4,4、数组元素在内存中占用连续的存储单元 如:int a5;,2020/7/9,第七章 数 组,5,5、数组大小不能动态地定义(常量表达式中不 能 有变量, 即便已赋值) 如:scanf(“%d”, ,2020/7/9,第七章 数 组,6,数组的引用: 方法: 数组名下标 下标可以是整型表达式(可以有变量) 一次只能引用一个元素, 不能引用整个数组 注意:下标不能超界(系统不检查,直接取值) 如: 由键盘输入数组(int a10)的数据 下面的用法都是错误的 scanf(“%d”,

3、a); scanf(“%d”, a10);,2020/7/9,第七章 数 组,7,正确用法是: int a10, i; scanf(“%d”, /最简单,2020/7/9,第七章 数 组,8,数组的操作和输出也应该是每次只访问一个元素: for (i=0;i=9;i+) /每个元素都变两倍 ai=ai*2; for (i=0;i=9;i+) /输出所有数据 printf(“%d”, ai);,2020/7/9,第七章 数 组,9,数组的初始化: 数组的初始化,是指在程序运行之前,在编译阶段给下标变量赋值 1、定义时给所有元素赋值 int a10=0,1,2,3,4,5,6,7,8,9; 2、给

4、所有元素赋值时可以不指定数组的长度 int a =0,1,2,3,4,5,6,7,8,9; 3、给部分元素赋值: int a10=0,1,2,3,4,5; 只给前六个赋值 4、剩下的元素系统自动赋以0或空字符(wjp8.c),2020/7/9,第七章 数 组,10,程序举例: 选择法排序 (wjp4.c) 用随机数产生100个100200之间的整数, 并按由大到小排列 #include “stdlib.h” /*用到random()函数*/ int main() int c100; int i,j,k,m; for (i=0;ick) k=j; m=ci;ci=ck;ck=m; for (i=

5、0;i=99;i+) printf(“%d,”,ci); return 0; ,2020/7/9,第七章 数 组,11,第二节 二维数组的定义和引用,案例2:考试结束,共72人,每人有五个分数,如何存储? 每个人有五个分数,可以将这5个分数组成数组,这个数组是一维的: int x5; 这样的数组共需要72个,即需要定义: int a05, a15, a25a715; 合并成一个二维数组: int a725;,2020/7/9,第七章 数 组,12,第二节 二维数组的定义和引用,逻辑结构:,2020/7/9,第七章 数 组,13,第二节 二维数组的定义和引用,逻辑结构:,2020/7/9,第七章

6、 数 组,14,第二节 二维数组的定义和引用,物理存储顺序: 按行连续存放,2020/7/9,第七章 数 组,15,二维数组的引用: 数组名下标下标 如: m=a10+2; 二维数组的初始化: 将所有数据在大括号中写出: int a23=1,2,3,4,5,6; 分行赋值: int a34=1,2,3,4,5,6,7,8,9,10,11,12;,2020/7/9,第七章 数 组,16,给部分元素赋值: int a34=1,2, 5, 9,10,11; int a34=0,1, , 9,10,11,12; int a34=0,1; 给全部元素赋值时, 可以不指定第一维 的长度 int a 3=1

7、,2,3,4,5,6; 分行给部分元素赋值时, 可省略第一维 的长度, 但 每行一个大括号(不能省) int a 3=1,2,3,4,5, ;,不能省,2020/7/9,第七章 数 组,17,程序举例: 某班20人, 考试三门课成绩已知, 试按总分排名输出 输出格式:学号 数学 英语 计算机 总分 名次 编程思路: 数据定义:有五种数据要用数组存储 int a205 (名次不用数组, 用循环变量) 数据数入:循环实现 计算总分:输入每人成绩的同时计算出总分 排序: 打印输出:,2020/7/9,第七章 数 组,18,int main( ) /*wjp5.c*/ int a215, i, j,

8、k, t; for(i=1;iak4) k=j; for (j=0;j=4;j+) t=aij; aij=akj; akj=t; ,2020/7/9,第七章 数 组,19,/*接上页*/ printf(“ 学号 数学 英语 计算机 总分 名次n”); for(i=1;i=20;i+) for(j=0;j=5;j+) if (j!=5) printf(“ %d ”, aij); else printf(“ %dn”,i); return 0; ,2020/7/9,第七章 数 组,20,思考: 编程计算两个矩阵相乘 A(m,k)B(k,n)=C(m,n) 程序: for(i=1;i=m;i+) f

9、or(j=1;j=n;j+) for(p=1;p=k;p+) cij+=aip*bpj; ,2020/7/9,第七章 数 组,21,第三节 字符数组,定义:char 数组名常量表达式 如: char c15; 也可以定义成整型数组: int c15; 初始化: 逐个字符赋给数组元素: char c6=h,e, l, l, o, !; 字符可以少于元素个数,后面作空字符处理: char c15=h,e, l, l, o, !; 字符多于元素个数系统作出错处理,2020/7/9,第七章 数 组,22,若省略数组长度, 系统自动以字符个数为其长度: char c =h,e, l, l, o, !;

10、可以这样赋值: char c =“hello!”; /*字符串*/ 但存储时自动在最后加一个空字符0 字符数组的引用: 字符数组的引用同数值数组的引用,2020/7/9,第七章 数 组,23,字符数组的输入输出: 1、输入一个数组: char c15; scanf(“%s”,c); /*可不用 若输入 I am a student 则 I、 am 分别赋给s1、s2后面各加一个空字符 (见wjp6.c),2020/7/9,第七章 数 组,24,3、输出一个字符数组: char c10=“hello!”; printf(“%sn”,c); 4、也可以以单个字符输出: char c10=“hell

11、o!”; for(n=0;n=5;n+) printf(”%c”,cn); 若改为:for(n=0;n=9;n+) 则多输出4个空字符0 (wjp7.c),以0为 结束标志,可以用while循环 n=0; while(cn!=0) printf (”%c”, cn); n+; ,2020/7/9,第七章 数 组,25,字符串处理函数: 1、puts(字符数组):输出一个字符串 如:static char str =“hello”; puts(str); 区别:输出后自动换行 2、gets(字符数组):输入一个字符串(以回车为结束标志) 3、strcat(字符数组1,字符数组2或串) 作用:将数

12、组2的有效内容连接到数组1后面, 函数值:数组1的地址 数组1 必须足够长,能容纳数组2,2020/7/9,第七章 数 组,26,例: s120=“I am ”; s220=“a student”; printf(“%sn”,strcat(s1,s2); 结果: I am a student,I,a,m,0,a,s,t,u,d,e,n,t,0,I,a,m,a,s,t,u,d,e,n,t,0,2020/7/9,第七章 数 组,27,4、strcpy(字符数组1, 字符数组2或串) 作用: 将字符数组2 中的字符复制到字符数组1中, 最后加一个空字符 说明: 数组1中的内容被覆盖 注意: 不能用赋

13、值语句把字符串赋给字符数组 如:str1=“hello”; 错误! 但可以给数组的元素赋值: 如: char str10; str0=h; str1=e; .,2020/7/9,第七章 数 组,28,5、strcmp(字符数组1, 字符数组2或串) 作用:将字符数组1的内容与字符数组2的比较,若相等, 函数值为0;不相等,若字符数组1内容大,函数值为一个正整数,若字符数组1内容小,函数值为一个负整数 如: char str =“hello”; strcmp(str, “hello”); /*其值为0*/ 一般用法:if (strcmp(str1,str2) = 0) 不能用 if(str1=s

14、tr2) . 如: char str =“hello”; strcmp(str, “helmo”); /*其值为负*/ 如: char str =“hello”; strcmp(str, “helLo”); /*其值为正*/,2020/7/9,第七章 数 组,29,6、strlen(字符数组或串) 作用:测试字符数组中有效字符的长度(不含0) 如: char str =“hello”; printf(“%dn”,strlen(str); 结果为: 5 7、strlwr(字符数组或串) 作用:将字符串中的大写转换为小写 8、strupr(字符数组或串) 作用:将字符串中的小写转换为大写 (wjp10.c),2020/7/9,第七章 数 组,30,将字符串s2中的字符拷贝到s1中(不用strcpy) int main() char s120,s220; int i; gets(s2); for(i=0;i=49 ,2020/7/9,第七章 数 组,32,P141 2, 4, 7, 10, 13 80枚硬币中有一枚假币(稍轻),用天平称4次,找出假币。 提示:分三组,天平两边各放一组 字符数组中存有字符串,试将其逆序存放,问 题,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报