欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    浙江大学C颜晖原版课件C7.pptx

    • 资源ID:87179445       资源大小:371.92KB        全文页数:77页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    浙江大学C颜晖原版课件C7.pptx

    输入 30 个数,将它们排序后输出。数组:相同类型数据的有序集合 在内存中连续存放用数组名和下标唯一地确定数组元素每个元素都属于同一类型s0 1 2 29 s0 s1 s29s0、s1、s2、s29 第1页/共77页一批相同类型的变量使用同一个数组变量名,用下标来相互区分优点:表述简洁,可读性高便于使用循环结构s0 1 2 29 s0 s1 s29第2页/共77页7.1 一 维 数 组7.1.1 一维数组的定义和引用1、定义 类型名 数组名数组长度类型名:数组元素的类型数组名:数组变量的名称(数组),标识符数组长度:常量表达式,给定数组的大小int a10;定义一个含有10个整型元素的数组 a第3页/共77页int a10;定义一个含有10个整型元素的数组 achar c200;定义一个含有200个字符元素的数组 cfloat f5;定义一个含有5个浮点型元素的数组 f第4页/共77页2、数组元素的引用先定义,后使用只能引用单个的数组元素,不能一次引用整个数组数组元素的引用:数组名下标下标:整型表达式取值范围:,数组长度-1int a10;10个元素:a0、a1、a9下标不要越界,不能使用a10第5页/共77页定义数组:类型名 数组名数组长度引用数组元素:数组名下标数组元素的使用方法与同类型的变量相同int k,a10;k=3;a0=23;ak-2=a0+1;scanf(%d,&a9);第6页/共77页区分 定义数组 和引用数组元素定义数组:类型名 数组名数组长度引用数组元素:数组名下标int a10;a0=a1=a9=0;下标不要越界第7页/共77页main()int a10;int i;for(i=0;i 10;i+)a i =i;for(i=0;i 10;i+)printf(%d,ai);输出:0 1 2 3 4 5 6 7 8 9 a0 a1 a9a 0 1 2 3 4 5 6 7 8 9第8页/共77页main()int i;int a10;for(i=0;i 10;i+)scanf(“%d”,&ai);for(i=0;i=0;i-)printf(%d,ai);输入:1 2 3 4 5 6 7 8 9 10 a0 a1 a9a 1 2 3 4 5 6 7 8 9 10输出:1 2 3 4 5 6 7 8 9 1010 9 8 7 6 5 4 3 2 1第9页/共77页3、程序举例例 7.1 输入10个数,求和.例 7.2 用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1,1,2,3,5,例7.3 输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。第10页/共77页程序举例例 7.4_1 输入10个数,求最小值.例 7.4_2 输入n(n10),再输入n个数,求最小值。例 7.4_3 输入n(n10),再输入n个数,输出最小值和它所对应的下标。例 7.4_4 输入n(n10),再输入n个数,将最小值与第一个数交换,输出交换后的n个数。例 7.5 输入n(n10),再输入n个数,用选择法将它们从小到大排序后输出。第11页/共77页例 7.1求和输入10个数,求和.main()int i,a10;long sum;for(i=0;i 10;i+)scanf(“%d”,&ai);sum=0;for(i=0;i 10;i+)sum=sum+ai;printf(%ldn,sum);第12页/共77页#include“stdio.h”void main()int a10,i;long sum=0;for(i=0;i 10;i+)scanf(“%d”,&ai);sum=sum+ai;printf(%ldn,sum);第13页/共77页用数组计算fibonacci数列的前20个数,并按每行打印5个数的格式输出。1,1,2,3,5,8,13,分析:用数组计算并存放fibonacci数列的前20个数f0=f1=1fn=fn-1+fn-2 2n19例 7.2 计算fibonacci数列第14页/共77页main()int i,fib20;fib0=fib1=1;for(i=2;i20;i+)fibi=fibi-1+fibi-2;for(i=0;i20;i+)printf(“%6d,fibi);if(i+1)%5=0)printf(“n);第15页/共77页输入5个整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。例7.3查找第16页/共77页输入:2 9 8 9 6 9输出:1void main()int i,x,a5;for(i=0;i5;i+)scanf(“%d”,&ai);scanf(“%d”,&x);for(i=0;i=5)printf(“Not Foundn”);第17页/共77页13void main()int i,x,a5;for(i=0;i5;i+)scanf(“%d”,&ai);scanf(“%d”,&x);for(i=0;i5;i+)if(ai=x)printf(%dn,i);输入:2 9 8 9 6 9输出:第18页/共77页输入:2 9 8 9 6 9输出:3void main()int i,x,sub,a5;for(i=0;i5;i+)scanf(“%d”,&ai);scanf(“%d”,&x);for(i=0;i5;i+)if(ai=x)sub=i;printf(%dn,sub);第19页/共77页输入10个数,求最小值.main()int i,min,a10;for(i=0;i 10;i+)scanf(“%d”,&ai);min=a0;for(i=1;i 10;i+)if(ai min)min=ai;printf(%dn,min);例 7.4_ 1 求最小值第20页/共77页输入n(n10),再输入n个数,求最小值。main()int i,min,n,a10;scanf(“%d”,&n);for(i=0;i n;i+)scanf(“%d”,&ai);min=a0;for(i=1;i n;i+)if(ai min)min=ai;printf(%dn,min);例 7.4_2 求最小值(n个数)第21页/共77页输入n(n10),再输入n个数,输出最小值和它所对应的下标。用index记录最小值对应的下标aindex就是最小值例 7.4_3 求最小值(下标)第22页/共77页输出最小值和它所对应的下标 N-S流程图输入数组aindex=0for i=1 to n-1ai aindexindex=i输出最小值aindex和下标indexYN第23页/共77页main()int i,min,n,a10;scanf(“%d”,&n);for(i=0;i n;i+)scanf(“%d”,&ai);index=0;for(i=1;i n;i+)if(aiaindex)index=i;printf(%d%dn,aindex,index);第24页/共77页输入n(n10),再输入n个数,将最小值与第一个数交换,输出交换后的n个数。用index记录最小值对应的下标aindex就是最小值最小值与第一个数交换aindex a0例 7.4_4 最小值交换第25页/共77页例 7.5 选择法排序35281输入n(n10),再输入n个数,用选择法将它们从小到大排序后输出。n=5(1)1 5 2 8 3 (2)2 5 8 3 (3)3 8 5 (4)5 8 第26页/共77页3 5 2 8 1 (n=5)5个数(a0a4)中找最小数,与a0交换(1)1 5 2 8 3 a4 a0 4个数(a1a4)中找最小数,与a1交换(2)1 2 5 8 3 a2 a1 3个数(a2a4)中找最小数,与a2交换(3)1 2 3 8 5 a4 a2 2个数(a3a4)中找最小数,与a3交换(4)1 2 3 5 8 a4 a3第27页/共77页(1)n个数(a0an-1)中找最小数,与a0交换(2)n-1个数(a1an-1)中找最小数,与a1交换 (n-1)2个数(an-2an-1)中找最小数,与an-2交换(1)5个数(a0a4)中找最小数,与a0交换(2)4个数(a1a4)中找最小数,与a1交换(3)3个数(a2a4)中找最小数,与a2交换(4)2个数(a3a4)中找最小数,与a3交换第28页/共77页n个数(a0an-1)中找最小数,与a0交换N-S流程图输入数组aindex=0for i=1 to n-1ai aindexindex=iaindexa0YN第29页/共77页N-S流程图(选择排序)输入数组aindex=kfor i=k+1 to n-1ai aindexindex=iaindexakYNfor k=0 to n-2输出数组a第30页/共77页void main()int i,index,k,n,temp,a10;scanf(“%d”,&n);for(i=0;in;i+)scanf(“%d”,&ai);for(k=0;kn-1;k+)index=k;for(i=k+1;in;i+)if(ai aindex)index=i;temp=aindex;aindex=ak;ak=temp;for(i=0;in;i+)printf(“%d”,ai);第31页/共77页7.1.2 一维数组的初始化定义数组时,对数组元素赋初值类型名 数组名数组长度=初值表;1.对全部元素赋初值int a10=0,1,2,3,4,5,6,7,8,9;a0=0,a1=1,.a9=9静态数组、全局数组、自动型数组初始化 static int b5=1,2,3,4,5;静态存储的数组如果没有初始化,自动给所有元素赋0 static int b5第32页/共77页2.部分元素初始化static int b5=1,2,3;b0=1,b1=2,b2=3,b3=0,b4=0 auto int fib20=0,1;如果对全部元素都赋初值,可以省略数组长度int a=0,1,2,3,4,5,6,7,8,9;建议不要省略数组长度第33页/共77页7.2 二维数组多维数组的空间想象二维数组:一个表格或一个平面矩阵一维数组:一列长表或一个向量多维数组:多维空间的一个数据列阵三维数组:三维空间的一个方阵第34页/共77页7.2.1 二维数组的定义和引用1、定义类型名 数组名行长度列长度int a32;定义1个二维数组a,3行2列,6个元素int b510;5 行 10 列,50 个元素 第35页/共77页2、数组元素的引用先定义,后使用定义:类型名 数组名行长度列长度数组元素的引用:数组名行下标 列下标行下标的取值范围是0,行长度-1列下标的取值范围是0,列长度-1下标不要越界第36页/共77页int a32;3 行 2 列,6 个元素表示1个3行2列的矩阵a00 a01 a10 a11 a20 a21 二维数组的元素在内存中按行/列方式存放a00a01a10a11a20a21 第37页/共77页遍历二维数组行下标和列下标分别做为循环变量,通过二重循环,遍历二维数组通常将行下标做为外循环的循环变量a00 a01 a10 a11 a20 a21 for(i=0;i 3;i+)for(j=0;j2;j+)aij=i+j;i=0 j=0i=0 j=1i=1 j=0i=1 j=1i=2 j=0i=2 j=1 0 11 22 3第38页/共77页输入二维数组int a32;for(i=0;i 3;i+)for(j=0;j2;j+)scanf(“%d”,&ai j);输入:1 2 3 4 5 6a00 a01 a10 a11 a20 a21 1 23 45 6第39页/共77页按矩阵的形式输出二维数组int a32;for(i=0;i 3;i+)for(j=0;j2;j+)printf(“%d”,&ai j);printf(“n”);a00 a01 a10 a11 a20 a21 第40页/共77页3、程序举例例7.6 定义1个3*2的二维数组a,数组元素的值由下式给出,按矩阵的形式输出a。ai j=i+j(0i2,0j1)例7.7 找出矩阵中绝对值最小的元素,以及它的行下标和列下标。例7.8 方阵转置(行列互换)第41页/共77页定义1个3*2的二维数组a,数组元素的值由下式给出,按矩阵的形式输出a。ai j=i+j(0i2,0j1)例7.6 第42页/共77页#include void main()int i,j;int a32;for(i=0;i3;i+)for(j=0;j2;j+)ai j=i+j;for(i=0;i3;i+)for(j=0;j2;j+)printf(%4d,ai j);printf(n);第43页/共77页找出矩阵中绝对值最小的元素,以及它的行下标和列下标。求绝对值函数 abs()或 fabs()头文件 math.hrow记录绝对值最小的元素的行下标col记录 列下标arowcol就是绝对值最小的元素例7.7 第44页/共77页#include#include void main()int i,j;int a32;for(i=0;i 3;i+)for(j=0;j2;j+)scanf(“%d”,&ai j);第45页/共77页 row=col=0;for(i=0;i3;i+)for(j=0;j2;j+)if(abs(ai j)abs(arowcol)row=i;col=j;printf(“a%d%d=%dn,row,col,arowcol);输入:3 2 10 -9 6 -1 3 210 -9 6 -1第46页/共77页int aNN;N是正整数数组元素 ai j,i和j的取值范围0,N-1用二维数组a表示N*N方阵时,对应关系:a00 a01 a02 主对角线 a10 a11 a12 上三角a20 a21 a22 下三角方阵 i=ji=j第47页/共77页输入一个正整数n(1n6),根据下式生成1个n*n的方阵,然后将该方阵转置(行列互换)后输出。ai j=i*n+j+1(0in-1,0jn-1)int a66例7.8 第48页/共77页分析1 2 3 4 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij aji第49页/共77页#include void main()int i,j,n,t;int a66;scanf(“%d”,&n);for(i=0;in;i+)for(j=0;jn;j+)ai j=i*n+j+1;输入 31 2 3 4 5 67 8 9第50页/共77页 for(i=0;in;i+)for(j=0;jn;j+)t=ai j;ai j=a ji;a ji=t;for(i=0;in;i+)for(j=0;jn;j+)printf(%4d,ai j);printf(n);第51页/共77页 for(i=0;in;i+)for(j=0;j n;j+)t=aij;aij=aji;aji=t;i=0:1 4 7 2 5 63 8 9i=1:1 2 7 4 5 83 6 9i=2:1 2 3 4 5 67 8 91 2 3 4 5 67 8 9第52页/共77页 for(i=0;in;i+)for(j=0;j n;j+)if(i=j)t=aij;aij=aji;aji=t;1 2 3 4 5 67 8 9主对角线:i=j上三角:i =ji=0:1 4 7 2 5 63 8 9i=1:1 4 7 2 5 83 6 9第53页/共77页 for(i=0;in;i+)for(j=0;j n;j+)if(i=j)t=aij;aij=aji;aji=t;1 2 3 4 5 67 8 9主对角线:i=j上三角:i =jfor(j=i;j n;j+)第54页/共77页7.2.2 二维数组的初始化1、分行赋初值int a33=1,2,3,4,5,6,7,8,9;static int b43=1,2,3,4,5;数组a1 2 3 4 5 67 8 9数组b1 2 30 0 04 5 00 0 02、顺序赋初值int a33=1,2,3,4,5,6,7,8,9;static int b43=1,2,3,0,0,0,4,5;第55页/共77页省略行长度对全部元素都赋了初值,int a 3=1,2,3,4,5,6,7,8,9;或分行赋初值时,在初值表中列出了全部行static int b 3=1,2,3,4,5,建议不要省略数组a1 2 3 4 5 67 8 9数组b1 2 30 0 04 5 00 0 0第56页/共77页7.3 字符串字符串的存储和运算用一维字符数组实现7.3.1 一维字符数组定义、引用、初始化char str80;定义一个含有80个字符型元素的数组str char t5=H,a,p,p,y;初始化数组 t t0 t1 t4t H a p p y第57页/共77页7.3.1 一维字符数组char t5=H,a,p,p,y;static char s6=H,a,p,p,y;s0 s1 s5s H a p p y 0 t0 t1 t4t H a p p ystatic char s6=H,a,p,p,y,0;0代表字符0,也就是ASCII码为0的字符 static char s6=H,a,p,p,y,0;第58页/共77页一维字符数组char t5=H,a,p,p,y;for(i=0;i 对字符数组的操作存储static char s6=H,a,p,p,y,0;字符数组初始化:用字符串常量static char s6=Happy;static char s6=Happy;第61页/共77页字符串static char s6=Happy;数组长度=字符串的有效长度+1char t5Happy 不能存入t s0 s1 s5s H a p p y 0第62页/共77页字符串auto char s80=Happy;s0 s1 s5s H a p p y 0?字符串遇0结束第一个0前面的所有字符和0一起构成了字符串Happy”0之后的其他数组元素与该字符串无关第63页/共77页计算字符串的有效长度,并输出该字符串字符串的有效长度:有效字符的个数数组中第一个0前面的字符个数例7.10 字符串的有效长度 s0 s1 s5s H a p p y 0?第64页/共77页void main()int i=0,len;char s80=Happy;for(i=0;si!=0;i+);len=i;printf(len=%dn,len);for(i=0;si!=0;i+)putchar(si);s0 s1 s5s H a p p y 0?输出len=5Happy第65页/共77页输出字符串for(i=0;si!=0;i+)putchar(si);for(i=0;i80;i+)putchar(si);for(i=0;i 对字符数组的操作存储字符数组初始化:用字符串常量static char s6=”Hello;赋值s0=a;s1=0;等价static char s6=a;第67页/共77页字符串区分“a”和 a“a”2个字符a和0a 1个字符常量第68页/共77页输入字符串把字符串放入一维字符数组(存储)对字符串的操作=对字符数组的操作存储字符数组初始化:static char s6=”Happy;赋值:s0=a;s1=0;输入 0代表空操作,无法输入输入时,设定一个输入结束符将输入结束符转换为字符串结束符0第69页/共77页输入一个以问号结束的字符串(少于80个字符),统计其中数字字符的个数。分析:数组长度取上限80以?做为输入结束符例7.11 统计第70页/共77页void main()int count=0,i=0;char s80;while(si=getchar()!=?)i+;si=0;for(i=0;si!=0;i+)if(si=0)count+;printf(count=%dn,count);输出count=3输入Its 512?0 1 2 3 4 5 6 7 8s I t s 5 1 2 0?第71页/共77页输入一个以回车结束的字符串(少于10个字符),它由数字字符组成,将该字符串转换成整数后输出。“123”=123分析:数组长度取上限10以n做为输入结束符例7.12 字符串转换成整数第72页/共77页void main()int i=0;char s10;long n=0;while(si=getchar()!=n)i+;si=0;for(i=0;si!=0;i+)if(si=0)n=n*10+(si-0);else break;printf(%Ldn,n);输出123输入123 0 1 2 3 s 1 2 3 0?第73页/共77页for(i=0;si!=0;i+)if(si=0)n=n*10+(si-0);else break;0 1 2 3 s 1 2 3 0?i si si-0 n=n*10+(si-0)0 1 1 0*10+1=1 1 2 2 1*10+2 =122 3 3 12*10+3 =1233 0第74页/共77页字符串小结字符串:一个特殊的一维字符数组 0把字符串放入一维字符数组(存储)数组长度足够字符数组初始化:static char s80=”Happy;赋值:s0=a;s1=0;输入:输入结束符=字符串结束符0 i=0;while(si=getchar()!=n)i+;si=0;s0 s1 s5s H a p p y 0?第75页/共77页把字符串放入一维字符数组(存储)对字符串的操作=对字符数组的操作只针对字符串的有效字符和字符串结束符0 检测for(i=0;si!=0;i+)putchar(si);s0 s1 s5s H a p p y 0?第76页/共77页感谢您的观看!第77页/共77页

    注意事项

    本文(浙江大学C颜晖原版课件C7.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开