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

    C程序设计基础讲义5.ppt

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

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

    C程序设计基础讲义5.ppt

    程序设计语言程序设计语言C信息与计算科学教研室CHGGONGCC.SHU.EDU.CN第五章 数组一维数组多维数组字符数组习题讲解数组数组一组同名不同下标的下标变量。就是指具有相同数据类型的变量集。例1:求10个整数最大值。main()int a10,max,i;scanf(%d,a0);max=a0;for(i=1;imax)max=ai;printf(max=%dn,max);1.一维数组1 定义方法2 引用方法3 初始化方法4 字符输入出方法5 排序方法1 定义方法一维数组的说明格式是:类型 变量名长度;如:int a10;unsigned long a20;char*s5;char*f;定义方法要点int a10;定义方法要点:1.类型:数组元素的类型 2.地址:即首地址:&a0=a,第i元素地址&ai=a+i*(元素长度);3:长度:数组有10个元素,a0a9;char str 8;说明的数组中存入“hello”字符串后,str表示第一个字母“h”所在的内存单元地址。str0 存放的是字母“h”的ASCII码值,以此类推,str4存入的是字母“o”的ASCII码值,str5则应存放字符串终止符0。hello02 初始化方法int a10=2,4,6,8,10;char c80,*p=H,e,l,l,o=“Hello”;如:如:1.指出下列合法定义指出下列合法定义A.int a=“string”;B.char a=“string”;C.int a5=0,1,2,3,4,5;D.char a=1,2,3,4,5;2.int a12=1,2,12;char c=a,d,g;表式表式=4?A.ag-cB.a4C.ad-cD.ad-c3 引用方法下标法下标法main()char c80;int i;scanf(%s,c);for(i=0;ci!=0;i+)printf(%c,ci);/*scanf(%s,c);*/*printf(%s,c);*/*for(i=0;ci!=0;i+)scanf(%c,&ci);*/指针法指针法main()char c80,*p=c;printf(n);scanf(%s,p);for(p=c;*p!=0;p+)printf(%c,*p);5 排序方法A冒泡法 B选择法96824968249628 492 68 42 968 49 6 8 2 42 9 6 8 42 4 9 6 8 2 4 6 9 8冒泡法968249682428262 9main()int n,i,j,k,x,a100;scanf(%d,&n);printf(n);for(i=0;in;i+)scanf(%d,&ai);for(k=1;kn;k+)for(j=n-1,i=0;in-k;i+,j-)if(ajaj-1)x=aj;aj=aj-1;aj-1=x;for(i=0;in;i+)printf(%d,ai);printf(n);选择法main()int n,i,k,x,min,num,a100;scanf(%d,&n);printf(n);for(i=0;in;i+)scanf(%d,&ai);for(k=0;kn-1;k+)min=ak;num=k;for(i=k;in;i+)if(aimin)min=ai;num=i;x=anum;anum=ak;ak=x;for(i=0;in;i+)printf(%d,ai);printf(n);9 6 8 2 42 9 6 8 42 4 9 6 8 2 4 6 9 82 4 6 8 9插入法main()int n,i,j,x,a100;scanf(%d,&n);printf(n);for(i=0;in;i+)scanf(%d,&ai);for(i=0;i=0&xaj;j-)aj+1=aj;aj+1=x;for(i=0;in;i+)printf(%d,ai);printf(n);9 6 8 2 46 9 8 2 46 8 9 2 4 2 6 9 8 42 4 6 9 8简单排序方法法法1 数组法数组法int i,j,a10,x,*p=a;for(i=0;i9;i+)for(j=i+1;j10;j+)if(aiaj)x=ai;ai=aj;aj=x;法法2 数组指针法数组指针法(*p=a;ap)if(pipj)x=pi;pi=pj;pj=x;简单排序方法法3 指针变量法int i,j,a10,x,*p=a;for(i=0;i9;i+)for(j=i+1;j10;j+)if(*(p+i)*(p+j)x=*(p+i);*(p+i)=*(p+j);*(p+j)=x;法4 指针数组法(pa)简单排序方法法5 移动指针法int i,j,a10,x,*p=a;for(i=0;i10;i+)scanf(“%d”,p+);p=a;for(i=0;i10;i+)printf(“%d”,*p);p+;习题P1495.2 5.3 5.4习题5.2习题5.2:输入10个数,输出这10个数中仅出现一次的数。如输入:12 36 72 36 87 99 87 87 12 35则输出:72 99 35 设一计数变量n,统计一个数出现次数。基本算法思想 对于每个数,与全部数一一比较,如遇相等,则 n加1。一个数与全部数一一比较完后,如计数值n为1,则表示该数仅出现一次,输出该数。习题5.2main()int a10,i,j,n;for(i=0;i 10;i+)scanf(%d,&ai);for(i=0;i 10;i+)n=0;for(j=0;j 10;j+)if(ai=aj)n+;if(n=1)printf(%d,ai);习题5.31编一程序,从键盘输入年份和该年中的第几天,计算并输出该天的日期(YYYY-MM-DD).例如,输入:2004279 输出:2004-10-5。2编一程序,从键盘输入日期(YYYY-MM-DD),计算并输出该日期是该年的第几天.例如,输入:2004-10-5 输出:279。习题5.3#includestring.h“#includestdio.hmain()int s13,a,b,m,n,i,c13=0,31,59,90,120,151,181,212,243,273,304,334,365;scanf(%d%d,&a,&b);if(a%4=0&a%100!=0)|(a%400)=0)s0=0;s1=31;s2=60;s3=91;s4=121;s5=152;s6=182;s7=213;s8=244;s9=274;s10=305;s11=335;s12=366;else for(i=0;i13;i+)si=ci;for(i=0;i12;i+)if(sib&bsi+1)m=i+1;else if(si=b)m=i;if(s12=b)m=12;n=b-sm-1;printf(%d-%d-%dn,a,m,n);习题5.4从键盘输入一长度为6的字符串,用循环结构打印出一字符矩阵,共6行6列,首行为该字符串,以后各行依次为上一行末位字符移到首位的字符串.例如,输入字符串”ABCDEZ”,则打印出如图1所示的字符矩阵。A B C D E ZZ A B C D EE Z A B C DD E Z A B CC D E Z A BB C D E Z A习题5.4#includestdio.hmain()char s7,t;int i,j;gets(s);for(i=0;i0;j-)sj=sj-1;s0=t;2.二维数组多维数组数组元素下标2个或2个以上数组。A23可视为a0,a1=a10,a11,a121 定义方法2 初始化方法3 引用方法4 字符输入出方法5 例题1.定义方法多维数组定义:一般格式:类型 数组名第n维长第n-1维长.第1维长;例如:int m32;/*定义一个整数型的二维数组*/char c223;/*定义一个字符型的三维数组*/数组m32共有3*2=6个元素,内存组织顺序为:m00,m01,m10,m11,m20,m21;数组c223共有2*2*3=12个元素,内存组织顺序为:c000,c001,c002,c010,c011,c012,c100,c101,c102,c110,c111,c112,数组占用的内存空间(即字节数)的计算式为:字节数=第1维长度*第2维长度*.*第n维长度*该数组数据类型占用的字节数 1.定义方法2 初始化方法1分行法:分行法:int p23=2,-9,0,8,2,-5;/*定义数组定义数组p并初始化并初始化/*2不分行:不分行:int p23=2,-9,0,8,2,-5;3列赋法:列赋法:int p23=2,8,2;/*未赋值者为未赋值者为0/*4行赋法:行赋法:int p23=2,-9;5缺省法:缺省法:int p3=2,-9,0,8,2,-5;3 引用方法1)下标法:下标法:int a23;a11为第二行第二列元素;为第二行第二列元素;a32出错!出错!main()int a23,i,j;for(i=0;i2;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i2;i+)for(j=0;j3;j+)aij=aij+1;printf(%8d,aij);4 多维数组编程 EX4:矩阵转置A=1 2 3 ,B =1 4 4 5 6 2 5 3 6main()int a23,b32,i,j;for(i=0;i2;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;j2;j+)bij=aji;printf(%8d,bij);EX5.已知10名学生3门课程成绩,统计3门课程总分最高的学生学号与总分。main()int s104,i,max,max_i;for(i=0;i10;i+)scanf(%d%d%d,&si0,&si1,&si2,);si3=si0+si1+si2;max=s03;max_i=0;for(i=0;imax)max=si3;max_i=i;printf(student No=%d Total=%dn,max_i,max);4 多维数组编程举例EX6.计算并输出一个54的整数矩阵周边各元之和,矩阵各元从键盘输入。#include stdio.h“main()int a54,i,j,sum=0;for(i=0;i5;i+)/*输入并计算矩阵各元之和*/for(j=0;j4;j+)scanf(%d,&aij);sum+=aij;for(i=1;i4;i+)/*矩阵各元之和减去矩阵各元*/for(j=1;j3;j+)sum-=aij;printf(Sum=%dn,sum);4 多维数组编程举例3 字符输入出方法1.char c;scanf(%s,c);scanf(%c,c);2.char*p=abcdefg3.char c80;gets(c);puts(c);char c80;*p=c;gets(p);puts(p);4.char c80;for(i=0;ci!=0;i+)scanf(%c,&ci)for(i=0;ci!=0;i+)printf(%c,ci);1.键盘输入一字串(80字符),逆序存放后输出逆序存放原字符串,只要从该字符串首尾两端开始往中间依次逐个交换两边的字符即可。程序如下:#include stdio.h#include string.hmain()char s81,t;int i,j;printf(Input a string:n);gets(s);for(i=0;j=strlen(s)-1;i=A&ai=a&ai=z)countai-a+;for(i=0;i0)printf(%c=%d,A+i,counti);printf(n);3 字符输入出方法5.3.3 1.字符处理函数字符处理函数gets(数组名数组名)puts(数组名数组名)#include strlen(数组名数组名)strlwr(数组名数组名)strupr(数组名数组名)strcpy(数组名数组名,字串字串,整数整数)strcat(数组名数组名,字串字串)#include 2.用法用法char c480;for(i=0;i4;i+)gets(ci);puts(ci);3.例题:例题:1字符冒泡法字符冒泡法#include main()char a480,b480;int I,j,k;for(i=0;i4;i+)gets(ci);for(i=0;ii;j-)if(strcmp(aj,aj-1)strlen(s2)first=2;/*长度比较*/else if(strlen(s1)=strlen(s2)&(strcmp(s1,s2)0)first=2;/*长度相等且字符串2小*/if(first=1)/*连接合并成字符串3*/strcpy(s3,s1);strcat(s3,-);strcat(s3,s2);else strcpy(s3,s2);strcat(s3,-);strcat(s3,s1);puts(s3);/*输出连接合并成的字符串3*/习题P150编程5.6 5.8 5.12 5.13

    注意事项

    本文(C程序设计基础讲义5.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




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

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

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

    收起
    展开