十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
cell数组一般被叫做元胞数组,它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等,类似于学过的c语言里的结构体
成都创新互联公司服务项目包括邻水网站建设、邻水网站制作、邻水网页制作以及邻水网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,邻水网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到邻水省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1.cell数组的创建
可以直接通过{}类似于矩阵的直接赋值:a={'winter',123,'coming','哈哈'};
也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={'winter',123,'coming','哈哈'};
2.cell数组的访问
与普通矩阵,数组的主要区别在于:通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容,举例如下图所示,其他操作基本一样。
3.cell数组相关的函数
cell:创建空的元胞数组,预分配内存
celldisp:显示元胞数组所有内容
cellplot:利用图形方式显示内容(因缺思厅!)
cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵)
mat2cell:将普通矩阵转化成元胞数组
iscell:判断输入是否为元胞数组
cellfun:为cell数组的每个cell单元执行指定的函数,fun可以是特殊的函数或者句柄
b={[1,2,1];[2,1,1];[1,1,2]};
c=cellfun(@(x)(mat2str(x)),b,'un',0)
更一般的例子参见
4.cell单元的删除
我们知道矩阵及矩阵的删除可以通过[]实现:
元胞数组操作类似但和其赋值一样有区别,区别就在于{}和()
a={1,2,3};
a{1}=[];%并不能删除第一个cell单元,只是变成空值
a(1)=[];%删除第一个单元
a(:)=[];%一次性删除所有cell单元
如果p为一个数,那么h(1)=p,是没有问题的。
如果p为一个向量,那么h(1,:)=p是没有问题的。
如果p是一个矩阵的话,上面的两种赋值方法都是会有错误的。
那么要如何处理呢?
这时就用到了cell数据类型了。cell的每个单元都可以存储任何数据,比如传递函数等。当然,存储矩阵更是没有问题的了。但是用cell数据类型之前,要先初始化。
a=cell(n,m)
那么就把a初始化为一个n行m列的空cell类型数据。
如何赋值呢?
a{1,1}=rand(5)
那么a的1行1列的单元中存储的就是一个随机的5×5的方阵了。
那么要用第一个单元中的方阵中的某个值呢?
可以如下引用:a{1,1}(2,3)
就可以了,引用cell单元时要用{},再引用矩阵的某个数据就要用()了。
cell单元中的每个单元都是独立的,可以分别存储不同大小的矩阵或不同类型的数据。
CELL是单元数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便;需要注意的是,单元数组仅仅是承载其他数据类型的容器,大部分的数学运算只是针对其中的具体数据进行的,而非针对单元数组本身进行。
定义
1. 细胞型数据的定义:
1)直接赋值定义:细胞型变量在定义时需要使用大括号,元素用逗号隔开
例: B = {1:4,A,‘abcd’}
2)使用cell函数,预先为细胞型变量定义空间
例: A = cell(m,n) 定义一个空的m行n列的cell类型
扩展资料:
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:
其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。
其二,简洁性。9 类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。
其三,结构完善。C语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。
参考资料来源:百度百科-CELL
#include stdio.h
#include stdlib.h
struct cell
{
char* name;
int time;
int seat;
int saled;
} a,b,c,d;
int sel=0;
void title();
void saleproc();
int saleThread(struct cell* ce,int dd);
void tiupiaoproc();
int tiupiaoThread(struct cell* ce);
void count();
int init(struct cell* ce,char* name,int time,int seat)
{
ce-name=name;
ce-time=time;
ce-seat=seat;
ce-saled=0;
return 1;
}
int saleThread(struct cell* ce,int dd)
{
if((ce-seat-ce-saled)=dd)
{
ce-saled+=dd;
printf("售票成功!按ESC键返回主菜单\n");
fflush(stdin);
int cc=_getche();
return 1;
}
else
{
printf("售票失败---余票不足!按ESC键返回主菜单\n");
fflush(stdin);
int cc=_getche();
return 0;
}
}
void saleproc()
{
int f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("* *\n");
printf("* 厅 影片 时间 余票 *\n");
printf("* *\n");
printf("* A %s %d:%d %3d *\n",a.name,a.time/60,a.time%60,a.seat-a.saled);
printf("* *\n");
printf("* B %s %d:%d %3d *\n",b.name,b.time/60,b.time%60,b.seat-b.saled);
printf("* *\n");
printf("* C %s %d:%d %3d *\n",c.name,c.time/60,c.time%60,c.seat-c.saled);
printf("* *\n");
printf("* D %s %d:%d %3d *\n",d.name,d.time/60,d.time%60,d.seat-d.saled);
printf("* *\n");
printf("***********************************\n");
printf("请选择放映厅(a,b,c,d)和要购的票数(按ESC键返回主菜单)(格式: a 5):\n");
fflush(stdin);
char cc;
int dd;
dd=_getche();
if(dd==27)
{
f=0;
break;
}
else
{
cc=(char)dd;
}
scanf("%d",dd);
switch(cc)
{
case 'a':
saleThread(a,dd);
f=0;
break;
case 'b':
saleThread(b,dd);
f=0;
break;
case 'c':
saleThread(c,dd);
f=0;
break;
case 'd':
saleThread(d,dd);
f=0;
break;
default:
break;
}
}
title();
}
int tiupiaoThread(struct cell* ce)
{
if(ce-saled==0)
{
printf("撞尼玛鬼了 老子一张票都没卖, 哪来的退票???\n");
fflush(stdin);
int cc=_getche();
return 0;
}
ce-saled--;
printf("退票成功! 按任意键返回主菜单\n");
fflush(stdin);
int cc=_getche();
return 1;
}
void tiupiaoproc()
{
int f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("* *\n");
printf("* 退 票 *\n");
printf("* *\n");
printf("* A %-20s *\n",a.name);
printf("* *\n");
printf("* B %-20s *\n",b.name);
printf("* *\n");
printf("* C %-20s *\n",c.name);
printf("* *\n");
printf("* D %-20s *\n",d.name);
printf("* *\n");
printf("***********************************\n");
printf("请输入要退的厅(a,b,c,d):\n");
char cc;
fflush(stdin);
scanf("%c",cc);
if(cc==' ')
{
f=0;
break;
}
switch(cc)
{
case 'a':
tiupiaoThread(a);
f=0;
break;
case 'b':
tiupiaoThread(b);
f=0;
break;
case 'c':
tiupiaoThread(c);
f=0;
break;
case 'd':
tiupiaoThread(d);
f=0;
break;
default:
break;
}
}
title();
}
void countproc()
{
int f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("* *\n");
printf("* 统 计 *\n");
printf("* *\n");
printf("* A厅: 余票 %3d 上座率 %5.2f%% *\n",a.seat-a.saled,(((float)a.saled/(float)a.seat)*100));
printf("* *\n");
printf("* B厅: 余票 %3d 上座率 %5.2f%% *\n",b.seat-b.saled,(((float)b.saled/(float)b.seat)*100));
printf("* *\n");
printf("* C厅: 余票 %3d 上座率 %5.2f%% *\n",c.seat-c.saled,(((float)c.saled/(float)c.seat)*100));
printf("* *\n");
printf("* D厅: 余票 %3d 上座率 %5.2f%% *\n",d.seat-d.saled,(((float)d.saled/(float)d.seat)*100));
printf("* *\n");
printf("***********************************\n");
printf("按ESC键返回主菜单!\n");
fflush(stdin);
int cc=_getche();
if(cc==27)
{
f=0;
break;
}
}
title();
}
void title()
{
int f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("* *\n");
printf("* 欢迎光临牛B电影院 *\n");
printf("* *\n");
printf("* 1. 售 票 *\n");
printf("* *\n");
printf("* 2. 退 票 *\n");
printf("* *\n");
printf("* 3. 统 计 *\n");
printf("* *\n");
printf("* 4. 退 出 *\n");
printf("* *\n");
printf("***********************************\n");
printf("请选择:(1,2,3,4) \n");
fflush(stdin);
scanf("%d",sel);
getchar();
switch(sel)
{
case 1:
saleproc();
f=0;
break;
case 2:
tiupiaoproc();
f=0;
break;
case 3:
countproc();
f=0;
break;
case 4:
system("exit");
f=0;
break;
default:
break;
}
}
}
int main(int argc, char *argv[])
{
init(a,"钢铁侠3",18*60+30,150);
init(b,"致青春",19*60+30,150);
init(c,"姜戈",20*60+30,150);
init(d,"生化危机4",20*60+20,100);
title();
return 0;
}