6组织同类型数据.ppt_第1页
6组织同类型数据.ppt_第2页
6组织同类型数据.ppt_第3页
6组织同类型数据.ppt_第4页
6组织同类型数据.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序的数据结构基础,第2部分,数据结构算法=,C语言提供的数据持久化技术,用于在外部存储器中存储数据,基于变量地址的派生数据类型,描述一类属性的构造数据类型,构造数据类型,数组,结构,指针,用于组织相同类型数据的文件,本文主要介绍C语言提供的4种构造数据类型:相同类型数据的数组按顺序组织。数组是结构化数据类型,用于组织相同类型的数据,具有相同类型、顺序存储、随机访问和空间连续性的特征。单元5、5.1阵列基础、阵列定义、阵列初始化、阵列元素引用、5.1.1扑克牌的表示和阵列定义、1.1扑克牌101-113在阵列中的存储,分别表示红心a-k201至213,分别代表块A至K;301-313,分别代表梅花A-梅花K;401到413,分别代表黑桃A到K;501、502分别表示王、王。以这种方式,54张扑克牌可以由一个int型阵列牌来表示和存储,并且每个元素通过其在阵列中的下标或索引来区分,例如分别表示54张扑克牌的牌0、牌1、牌2、牌53。数组定义的一般格式是,一个数组使用一个名称来存储多个相同类型的数据。必须先定义数组,然后才能使用它。存储扑克的阵列卡可以用以下声明来定义。国际卡54;数组类型,数组名称数组长度;该声明语句定义了一个名为card的数组;它有元素的54个下标变量,称为数组大小54。每个元素都是int类型的,称之为int类型的数组。阵列初始化阵列卡的初始化语句是intcard 54=101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,330注意1:c语言允许初始化数组的左边部分。例如,它可以写成国际卡54=101,102 ;注意2:当所有元素都被初始化时,数组长度可以在声明语句中省略。例如,INTCARD =101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,330这样,只有前两个元素被初始化,而后面元素的值仍然不确定。当只有一些元素被初始化时,数组大小不能被忽略。数组的特点是每个元素都有相同的类型。这种类型称为数组基类型。元素具有顺序逻辑顺序和物理存储顺序,下标用来表示这种顺序关系。(1)、(2)一个数组的所有元素都占据一个连续的存储空间。(3)数组的元素可以用下标随机访问。注意:下标从0(4)开始,5.1.2扑克搜索:数组元素引用和数组名称参数,1。数组元素引用数组名加上方括号中的下标。例如,卡0、卡1、卡2、卡3)和卡的语法意义.相当于一组变量,称为下标变量。下标变量可用于随机访问数组中的任何元素,为其赋值或引用其值。代码5.1通过赋值方法给出每张扑克牌的值,输出每张扑克牌的值并搜索一张牌。# includeintmain(void)国际卡54,I,j,k,x,flag=-1;/*数组元素赋值*/用于(I=0;i4;I )/*将*/赋给(j=0)重复结构中的前52个元素;j13j)卡I * 13j=100 *(I 1)j 1;卡52=501;/*给最后两张扑克牌赋值*/牌53=502;/*输出每张卡的值*/的(I=0;i=53i )printf(卡%d=%d,I,卡I);/*搜索扑克牌*/printf(n输入要查找的牌:);Scanf (%d ,2。使用函数实现数组操作函数和数组名称参数,代码5.3扑克搜索功能。国际搜索卡(国际54),国际号码)国际号码;对于(k=0;k54K )/*搜索x张卡*/if(PKk=x) returnk;返回-1;,代码5.4函数搜索卡()测试主函数。#includeintsearchCard(intpk),intxintmain(void)intx,f;国际卡54=101,102,103,104,105,106,107,108,109,110,111,112,113,201,202,203,204,205,206,207,208,209,210,211,212,213,301,302,303,303,304打印(请输入要查找的卡:);扫描( %d ,数组名在C语言中有两种含义:一是识别数组;第二个是数组的第一个地址。因此,作为一个函数参数,在调用函数时,数组名不是传递给数组的内容,而是传递给内存中数组的起始地址。使用数组名作为函数参数需要一对方括号来清楚地表明它是一个数组及其数组类型。除非存在特殊情况,一般数组的大小可能不会被转移。因为在调用时,形式数组参数的大小被初始化为实际数组参数的大小。为了测试一个函数,你需要为它设计一个驱动函数。在C语言中,主函数通常用作驱动函数。驱动程序功能应为测试功能准备所需的实际参数。对于函数searchCard(),需要有一个提供操作的数组。5.1.3扑克洗牌的随机模拟。1.一次性洗牌模拟算法生成一个介于0和53之间的随机数rdm,并将卡0与卡rdm交换;生成一个介于1和53之间的随机数rdm,并将卡1与卡rdm交换;生成一个介于2和53之间的随机数rdm,并将卡2与卡rdm交换;在i53和用卡rdm交换卡i之间生成一个随机数RDM;这个过程可以描述为:对于(I=0;i54生成介于1和53之间的随机数rdm用rdm卡交换i卡;、代码5.5一次洗牌模拟功能。# include # include voidshuffle(国际信用卡公司)inti,rdm,tempsrand(时间(00);/*使用时间函数作为伪随机数序列种子*/用于(I=0;i54I) RDM=rand()%(54-I)I;/*在i,53*/temp=卡i之间生成一个随机数;/*交换两个数组元素的值*/卡I=卡RDM;卡RDM=temp;,代码5.6倍洗牌模拟功能。#include#includevoidshuffle(国际卡公司)国际时间=1;/*混洗时间*/inti,j,rdm,tempsrand(时间(00);/*使用时间函数作为伪随机数序列种子*/printf(n请输入混洗时间:);Scanf(%d ,5.1.4扑克排序:数组元素排序,1。泡沫排序算法每当扑克游戏结束时,人们总是在玩完后,即按照一定的顺序,对无序的牌进行排序。在这个例子中,卡片数组中的元素被排序。排序,也称为分类,是指按照一定的规则排列一列数据。有许多排序方法,例如,交换法、选择法、希尔法、插入法等。不同的方法有不同的效率。本节仅介绍一种有代表性的交换排序算法冒泡排序算法。扑克排

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论