麦档网
全部分类
  • 幼儿/小学教育 >
    幼儿/小学教育
    教育管理 学习方法 小学学案 小学教育 小学考试 幼儿教育 爱心教育 小学课件 课外知识 其它幼小文档
  • 中学教育 >
    中学教育
    高中教育 中学试题 初中教育 竞赛题 教学研究 中学学案 中学课件 职业教育 中考 高考英语 中学作文 体育理论与教学 高考 中学实验 音乐美术 其它中学文档
  • 高等教育 >
    高等教育
    工学 理学 历史学 农学 哲学 习题/试题 科普读物 大学课件 研究生课件 思想政治 专业基础教材 生物学 语言学 教育学 微积分 统计学 实验设计 其它高等教育文档
  • 论文 >
    论文
    管理论文 社科论文 文学论文 开题报告 经济论文 法律论文 医学论文 哲学论文 艺术论文 论文指导/设计 通讯论文 自然科学论文 大学论文 毕业论文 期刊/会议论文 其它论文
  • 研究生考试 >
    研究生考试
    考研政治 考研数学 考研英语 法律硕士 MBA/MPA 专业课 综合 辅导咨询 研究生其它文档
  • 资格/认证考试 >
    资格/认证考试
    公务员考试 专升本考试 成考 自考 教师资格考试 司法考试 微软认证 思科认证 注册会计师 全国翻译资格认证 医师/药师资格考试 会计职称考试 报关员资格考试 人力资源管理师 安全工程师考试 出国培训 资产评估师考试 技工类职业技能考试 银行从业资格 计算机等级考试 营养师认证 物流师考试 证券从业资格考试 注册税务师 理财规划师 建筑师考试 质量管理体系认证 建造师考试 其它考试文档
  • 办公文档 >
    办公文档
    调研文书 事务文书 规章制度 活动策划 股份制文书 统计图表 办公软件应用 解决方案 PPT模板素材 简明教程 工作计划 往来文书 工作总结 传真信函 会议纪要 产品手册 课程设计 教育范文 通知/申请 求职简历 说明文书 演讲致辞 词典 其它办公文档
  • 建筑/环境 >
    建筑/环境
    防腐 保温 环境科学 环保行业 建筑科学 建筑节能 保温建筑 防水建筑 防火建筑 装饰装潢 工程监理 工程造价 安全文明施工 岩土与地质勘察 建筑规划 给排水/暖通与智能 建筑图纸/图片/标牌 房地产 建筑机械 建筑制度 智能建筑 建筑论文 建筑材料 工程英语 公路与桥梁 市政工程 绿化工程 园林工程 古建工程 修缮加固与改造 人防工程 建筑QC 建筑资料 桩基础 钢结构 建筑贯标ISO 施工组织 设计及方案 建筑设计 建筑图集 水利工程 建筑规范 结构设计 建筑材料生产技术 建材标准 铁路工程 测绘 招标文件 电气安装工程 建筑环境其它文档
  • 生活休闲 >
    生活休闲
    星座运势宗教风水 社会民生 美容塑身 手工制作 娱乐时尚 充电交流 滑稽幽默 网络生活 科普知识 时政新闻 彩票 服装配饰 家居装修 美食烹饪 户外运动 婚嫁育儿 琴棋书画 两性情感 游戏攻略 武术 期刊/杂志 保健养生 宠物 摄影摄像 生活休闲其它文档
  • 行业资料 >
    行业资料
    家电行业 造纸印刷 纺织服装 食品饮料 酒店餐饮 物流与供应链 展会 生活用品 航海/船舶 传媒 水产/渔业 畜牧 公共安全/安全评价 林业 园艺 农作物 化学工业 国内外标准规范 轻工业/手工业 零售业 水利工程 日用品 农业工程 系统集成 冶金工业 金属学与金属工艺 社会学 武器工业 能源与动力工程 原子能技术 实验 家居行业 文化创意 船工业技术 航空/航天 石油、天然气工业 矿业工程 交通运输 旅游娱乐 室内设计 工业设计 行业其它文档
  • 管理/人力资源 >
    管理/人力资源
    宣传企划 企业文档 公司方案 商业合同 财务报表 励志书籍工具 经营企划 质量管理 物业管理 绩效管理 薪酬管理 销售管理 代理连锁 工程管理 信息管理 管理学资料 咨询培训 资本运营 企业信息化 市场营销 广告经营 劳动就业 项目管理 营销创新 劳动合同 商务礼仪 招聘面试 人事档案 员工关系 创业 企业文化 其它管理文档
  • 投标方案 >
    投标方案
    招标文件 工程建筑标书 交通运输标书 环保绿化标书 医疗卫生标书 仪器仪表标书 水利水电标书 能源化工标书 弱电安防标书 办公文教标书 通讯电子标书 机械设备标书 农林牧渔标书 其它标书
  • 换一换
    首页 麦档网 > 资源分类 > PPT文档下载
     

    第5章-c语言-构造数据类型.ppt

    • 资源ID:1816       资源大小:207.50KB        全文页数:53页
    • 资源格式: PPT        下载权限:游客/注册会员/VIP会员    下载费用:10金币 【人民币10元】
    快捷注册下载 游客一键下载
    会员登录下载
    三方登录下载: 微信快捷登录 QQ登录   微博登录  
    下载资源需要10金币 【人民币10元】
    邮箱/手机:
    温馨提示:
    支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

    第5章-c语言-构造数据类型.ppt

    北京交通大学计算机学院 计算机程序设计基础课程组,第5章 构造数据类型,教学目标,了解数组数据结构 熟悉数组定义,初始化和引用数组元素 掌握数组作为函数参数的作用 掌握基本排序方法 能够使用常用的字符处理函数 了解结构体数据结构,,,,,,,5.1 数组概述 5.2 一维数组 5.3 数组作函数的参数 5.4 一维数组应用 5.5 多维数组 5.6 字符数组与字符串 5.7 结构体,,,5.1 数组概述,构造数据类型之一 定义数组是有序数据的集合 组成数组的数据称为数组的元素 数组的每个元素都属于同一个数据类型 每个数组要用一个统一的标识符标识,,,,,,,,,定义 引用 初始化 输入和输出,5.2 一维数组,,,,,,,,定义,类型说明符 数组名[常量表达式]; 一维 二维 int a[5]; int a[3][4]; char c[20]; char c[2][3]; float x[10]; float x[2][3];,,,,,,引用,数组必须先定义,后使用。 只能逐个引用数组元素。 例如,定义数组 int a[3],数组元素为 a[0] a[1] a[2],,,,引用形式 一维 数组名[下标]; 例如a[2]1; b[0][1]5; a[ij];i,j为整型变量),,,例5.1 使用数组编程,计算出前10项fibonacci数列,要求一行打印5个数。,main { int f[10]; int i; f[0]0; f[1]1; fori2;i10;i f[i]f[i-1]f[i-2];,fori0;i10;i {ifi50 printf\n; printf4d,f[i]; } },,,,,,,初始化,顺序指定全部元素的初始值 int a[5]{1,2,3,4,5}; 指定部分元素的初始值 int a[5]{0,0,1}; 以上语句只给数组a的前面三个元素赋了初始值,未赋初值的元素的值在此默认为0;,,,,,,,,初始化时不指定数组元素的个数 int b[]{1,2,3}; 若初值的个数小于数组元素的个数,则初始化时不能省略数组元素的个数, 初值的个数不能大于数组元素的个数。,,,,,,,输入和输出,C语言规定,对数组的使用只能逐个引用数组元素,不能一次引用整个数组。同样,对数组的输入和输出也是依次对每个元素进行的。 例5.2 输入10个数,并将它们输出。,,,,,printfplease enter the data\n; fori0;i10;i scanfd,,printfoutput the data\n; fori0;i10;i printfd ,array[i]; printf\n; },输入,输出,,,,,,,,5.3 数组作函数的参数,数组名表示数组在内存中存放的起始地址(首地址),即数组第一个元素的地址。数组名作为函数的参数传递的是数组的起始地址,属于“地址传递”方式。因为传递了数组的起始地址,所有被调函数能够准确地知道该数组的存储位置,因此,被调用函数在函数体中修改形参数组元素时就是在修改实际的数组元素。,,例5.3 使用数组作函数的参数。 include define SIZE 6 void main { void modifyArrayint [] , int; void modifyElementint; int a[SIZE] { 1 , 2 , 3 , 4 , 5 , 6 }; int i; printf数组元素的原始值为\n; for i 0 ; i SIZE ; i printf3d, a[i]; printf\n; modifyArraya , SIZE; /* 以地址传递方式传递数组 */,printf调用modifyArray函数后数组元素的值为\n; for i 0 ; i SIZE ; i printf3d, a[i]; printf\n数组元素a[2]的值为 d\n,a[2]; modifyElementa[2]; /* 以值传递方式传递数组元素 */ printf数组元素a[2]的值为 d\n,a[2]; } void modifyArrayint b[] , int size /* 函数定义 */ { int j; forj0; j size; j b[j] * 2; } void modifyElementint m /* 函数定义 */ { int n; n m * 2; printf在函数modifyElement中的值为 d\n, n ; },,,,,,,,排序 数据查找 数据统计分析,5.4 一维数组应用,,,,,,排序 排序的方法很多,主要有 冒泡法 选择法 比较交换法 希尔法 插入法 例5.4 用冒泡法对10个整数按从小到大的顺序排列。,,,,冒泡法,排序过程 比较第一个数与第二个数,若a[0]a[1],则交换;然后比较第二个数与第三个数,若a[1]a[2],则交换;依次类推,直至第n-1个数和第n个数比较为止。第一轮结束时,结果最大的数被安置在最后一个位置上。 对前n-1个数进行第二轮排序,结果使次大的数被安置在第n-1个元素位置 重复上述过程,共经过n-1趟冒泡排序后,排序结束 算法的整体思路是让大的数不断地往下沉,小的数不断地往上冒,所以叫“冒泡排序法”,int a[5] n a[0] a[1] a[2] a[3] a[4] 第一轮 21 13 90 32 -1,,,,,13 21 90 32 -1,13 21 32 90 -1,第二轮 ......,13 21 90 32 -1,13 21 32 -1 90,for i1; i a[j1] { tempa[j]; a[j]a[j1]; a[j1]temp; } },include define N 10 void main { int a[N] , i , j , temp; printf请输入10个数\n; for i 0 ; i N ; i scanfd, },,,选择法,基本思想将第一个元素与第二个到第n个中最小者a[p]交换如果a[p]a[0],这时n个数中最小的数已调到最前面,这是第一轮的处理结果。依次类推,,,,,例5.5 选择法排序,fori0;i9;i { pi; forji1;j10;j ifa[j]a[p] pj; ifpi,{ meda[p]; a[p]a[i]; a[i]med; } },数据查找,例5.6 线性查找 include define N 100 void main { int a[N], i searchKey, element; for i 0 ; i N ; i a[i] 2 * x; printf输入要查找的数据\n; scanf“d ”, },int linearSearchint b [ ],int key, int n /*定义查找函数*/ { int j; for j 0; j n; j if b[j] key /*如果找到*/ returnj; return-1; },例5.7 折半查找,include define N 15 void main { void bi_searchint [] , int , int ; int a[100] , x , i , n 15; printf请输入数据\n; for i 0 ; i N ; i scanf d , },void bi_searchint a[],int n, int x { int mid, top, bot,find; top 0; bot n-1; find 0; do { mid top bot / 2; if x a[mid] { printf找到了3d,是 a[d],x,mid; printf\n; find 1; } else if x a[mid] top mid 1; } while top bot },数据统计分析,在实际应用中,经常要对大量的数据进行统计、分析和分类等,下面将介绍用数组统计所搜集到的数据。 例5.8 在某一次歌唱比赛中,20名评委给某个参赛选手打分,分数等级从110共10个等级,1表示最低,10表示最高,统计打分结果。,include define N 20 void main { int i,j; int score[20]{1,2,6,4,10,9,8,3,4,6,7,8,9,5,9,7,8,7,8,5}; int frequency[11]{0}; /*存放统计结果*/ for i 0; i 20; i frequency[score[i]]; /*进行统计*/ printf“ 等级 频率”; for j 1; j 11;j printf“4d12d \n”, j, frequency[j]”; },,,,,,,,二维数组的定义 二维数组的初始化 二维数组的引用 二维数组元素在内存中的排列顺序 应用举例,,5.5 多维数组,定义方式 数据类型 数组名[常量表达式][常量表达式];,,,例如 int a[2][3];,二维数组的引用 形式 数组名[下标][下标] 二维数组的初始化 初始化方法如下 1 int x[2][3]{{1,2,3},{4,5,6}} 把第一个花括号里的数据赋给第一行的元素,第二个 花括号里的数据赋给第二行的元素。 2 int x[3][4]{{1,1,1,1},{2},{3}}的作用是对数组中部 分元素赋初值,其余元素自动为0。 3int x[ ][4]{1,2,3,4,5,6,7,8,9,10,11,12} 这种方式表示给数组中全部元素赋初值时,对数组的第一维可以不指定长度,系统会认为这个数组是一个3行4列的二维数组,并按此分配存储空间。,,,,二维数组元素在内存中的排列顺序,按行存放 二维数组的元素在数组中的排列顺序可以计算出来,设一个mn的数组x,数组元素x[i][j] 在数组中的排列顺序为inj1。 例如34数组x,元素x[2][2]在数组的排列顺序为242111即数组中的第11个元素。,例5.9 将一个2*3矩阵转置,应用举例,,,,,,,,,字符数组的定义及初始化 用字符数组存放字符串 字符串的输入输出 用于字符串处理的函数 应用举例,,5.6 字符数组,,,,,定义 char str[20]; 初始化 逐个为数组中各元素指定初值字符。 char str[4] {w,e,l,l}; 对一个字符数组指定一个字符串初值。 char str[ ]{morning}; char str[ ] morning;,,定义及初始化,●什么是字符串 字符串是用一对双引号括起来的字符序列,这些字符可以是一般的可显示字符,也可以是某些特殊的控制字符; 无字符串变量,用字符数组处理字符串 字符串结束标志‘\0’ ● C语言中没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中。因此为了存放字符串,常常在程序中定义字符数组。例如 char c[10];,字符数组可以通过数组元素一个一个地进行输入输出,也可以对数组整体进行输入输出,通过数组元素一个一个输入输出时,用格式符“%c”,而对数组整体输入输出时,用格式符“%s”。,字符串的输入和输出 逐个字符I/O c 整个字符串I/O s,/* 用c */ main { char str[5]; int i; fori0;i5;i scanf“c”, },/* 用s */ main { char str[5]; scanf“s”, str; printf“s”, str; },包含在头文件 string.h,字符串输出函数 puts字符数组名/字符串 功能向显示器输出字符串(输出完,换行) 说明字符数组必须以‘\0’结束,字符串输入函数 gets字符数组名 功能从键盘输入一以回车结束的字符串放入字符 数组中 ,并自动加‘\0’ 说明输入串长度应小于字符数组长度,,功能把字符数组2连到字符数组1后面 返值返回字符数组1的首地址 说明字符数组1必须足够大 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’,字符串连接函数 strcat 字符数组1,字符数组2 例如 char str1[12]{“Turbo ”}; char str2[]{“c”}; printf“s”, strcatstr1,str2; 输出结果 Turbo c,功能将字符串2拷贝到字符数组1中去 返值返回字符数组1的首地址 说明字符数组1必须足够大 拷贝时‘\0’一同拷贝 不能使用赋值语句为一个字符数组赋值,字符串拷贝函数 strcpy字符数组1,字符数组2 例如 char str1[12]{“Turbo ”}; char str2[]{“c”}; printf“s”, strcpystr1,str2; 输出结果 c,,字符串比较函数 strcmp 字符串1,字符串2 功能比较两个字符串 比较规则对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或‘\0’为止 返值返回int型整数,a. 若字符串1 字符串2, 返回正整数 c. 若字符串1 字符串2, 返回零 说明字符串比较不能用“”,必须用strcmp,字符串长度函数 strlen 字符数组 功能计算字符串长度 返值返回字符串实际长度,不包括‘\0’在内,例5.10 统计一行字符中字母、空格、数字及其他字符的个数 include void main { char str[80]; int alphabet0,digit0 ; space0 , other0, i0; gets str ; for i 0 ; str[i] ‘\0’; i if ‘A’ ‘0’ digit; else other; printf“有d个字母,d个空格,d个数字,d个其他字符\n”, alphabet, space, digit, other; },,,,,,,,,结构体类型的定义 结构体变量的定义和引用 结构体变量的初始化 应用举例,,5.7 结构体类型,构造一个结构体类的数据类型的一般形式 struct 结构类型名 { 类型标识符 成员名; 类型标识符 成员名; 类型标识符 成员名; };,例如 struct student { char number[10]; char name[20]; char sex; int age; float score[20]; char addr[30]; };,定义 先构造结构体类的数据类型,后定义具有这种构造的变量。 struct 结构体类型名 { 类型标识符 成员名; 类型标识符 成员名; }; struct 结构体类型名 变量名1,变量名2..;,例如 struct student { char number[10]; char name[20]; char sex; int age; float score[20]; char addr[30]; }; struct student stud1,stud2;,引用 对结构体变量的使用是通过对其成员的引用来实现的。引用结构体成员的一般形式如下 结构变量名.成员名 例如 stud1.age 其中的圆点符号称为成员运算符,它的运算级别最高。,struct stud { long num; char name[20]; char sex; char addr[30]; }stud1{9708,”Liwei,F,144BeijingRoad”};,例5.11 输入3个学生的信息并输出。 include include struct stud { long num; char name[20]; char gender; int age; float score; };,,void main { struct stud student[3]; int i; char ch; char numstr[20]; for i 0 ; i 3 ; i { printf\n输入第[d]个学生的数据\n,i; getsnumstr; student[i].num atolnumstr; getsstudent[i].name; student[i].gender getchar; ch getchar; getsnumstr; student[i].age atoinumstr; getsnumstr; student[i].score atofnumstr; } printf\nnum\tname gender age score\n; for i 0 ; i 3 ; i printfld-15s3c6d 6.2f\n,student[i].num,student[i].name, student[i].gender,student[i].age,student[i].score; },,

    注意事项

    本文(第5章-c语言-构造数据类型.ppt)为本站会员(佳佳)主动上传,麦档网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读麦档网的“版权提示”【网址:https://www.maidoc.com/h-34.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

    麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
    备案号:蜀ICP备17040478号-3  
    川公网安备:51019002001290号 

    本站提供办公文档学习资料考试资料文档下载


    收起
    展开