当前位置: 首页 > news >正文

wordpress 留言板插件福州seo快速排名软件

wordpress 留言板插件,福州seo快速排名软件,上海网站建设聚众网络,c2750服务器做网站行吗C语言中的结构体(struct)是一种用户自定义的数据类型,它允许你将不同类型的数据项组合成一个单一的类型。结构体数组则是一种特殊的数组,其元素为结构体类型。这意味着你可以在一个数组中存储多个具有相同结构的记录。 定义结构体…

C语言中的结构体(struct)是一种用户自定义的数据类型,它允许你将不同类型的数据项组合成一个单一的类型。结构体数组则是一种特殊的数组,其元素为结构体类型。这意味着你可以在一个数组中存储多个具有相同结构的记录。

定义结构体数组

首先,你需要定义一个结构体类型,然后才能声明该类型的数组。

定义结构体
typedef struct Student {char *num;int age;double score;char *addr;
}Student;
声明结构体数组
struct Student arr[3];

这里,arr是一个结构体数组,可以存储3个Student类型的记录。

初始化结构体数组

可以直接在声明时初始化结构体数组的元素。

	struct Student arr[3] = {{"001",22,99.9,"云南"},{"002",23,96.35,"上海"},{"003",21,89.956,"广州"}};

访问结构体数组元素

你可以通过数组索引来访问结构体数组中的元素,并通过点操作符.来访问结构体成员。

len = sizeof(arr)/sizeof(arr[0]);for(i=0;i<len;i++){printf("学号:%s 年龄:%d 成绩:%.3lf 地址: %s\n",arr[i].num,arr[i].age,arr[i].score,arr[i].addr);}

输出为:

学号:001 年龄:22 成绩:99.900 地址:云南
学号:002 年龄:23 成绩:96.350 地址:上海
学号:003 年龄:21 成绩:89.956 地址:广州

结构体数组的使用场景

结构体数组非常有用,特别是在需要处理具有多个属性的数据集合时。例如,你可以使用结构体数组来存储班级中所有学生的信息,然后遍历这个数组来执行各种操作,如计算平均分、查找成绩最高的学生等。

结构体练习:选票系统

#include<stdio.h>
#include<string.h>struct XuanMin{char name[32];int  tickets;
};int main()
{struct XuanMin candidate[3];struct XuanMin max = {"0",0};int len;int i;int j;char tempname[32];int abandon;int abandtick = 0;len = sizeof(candidate)/sizeof(candidate[0]);for(i=0;i<len;i++){candidate[i].tickets = 0;printf("请输入候选人的名字:\n",candidate[i]);scanf("%s",candidate[i].name);}for(j=0;j<5;j++){abandon = 0;printf("请输入所要投的候选人的名字:\n");scanf("%s",tempname);for(i=0;i<3;i++){if(strcmp(tempname,candidate[i].name) == 0){candidate[i].tickets++;abandon = 1;}}if(abandon == 0){printf("无所选候选人,弃票!\n");abandtick++;}}for(i=0;i<3;i++){printf("候选人:%s,票数:%d\n",candidate[i].name,candidate[i].tickets);}for(i=0;i<3;i++){if(max.tickets < candidate[i].tickets){max = candidate[i];}}printf("%s当选,票数:%d,弃票:%d",max.name,max.tickets,abandtick);return 0;
}

输出为:

请输入候选人的名字:
aa
请输入候选人的名字:
bb
请输入候选人的名字:
cc
请输入所要投的候选人的名字:
aa
请输入所要投的候选人的名字:
aa
请输入所要投的候选人的名字:
bb
请输入所要投的候选人的名字:
cc
请输入所要投的候选人的名字:
a
无所选候选人,弃票!
候选人:aa,票数:2
候选人:bb,票数:1
候选人:cc,票数:1
aa当选,票数:2,弃票:1

结构体指针

结构体指针是指向结构体变量的指针,它存储的是结构体变量的内存地址,而不是结构体变量的值本身。使用结构体指针可以方便地访问和操作结构体中的成员,特别是在处理大型数据结构或链表等数据结构时。

定义结构体和结构体指针

首先,你需要定义一个结构体类型,然后才能创建结构体变量和结构体指针。

//定义一个结构体
struct Test{         char cdata;int  idata;
};//定义结构体指针
struct Test t1 = {'A',0};
struct Test *pt = &t1;

使用结构体指针访问结构体成员

通过结构体指针访问结构体成员需要使用解引用操作符(->

pt->cdata = 'C';
pt->idata = 1;
printf("t1的cdata=%c,idata=%d\n",t1.cdata,t1.idata);
printf("t1的cdata=%c,idata=%d\n",pt->cdata,pt->idata);

输出为:

t1的cdata=C,idata=1
t1的cdata=C,idata=1

使用场景:结构体数组进行打印

struct Student arr[3] = {{"001",22,99.9,"云南"},{"002",23,96.35,"上海"},{"003",21,89.956,"广州"}
};
struct Student *p;
p = arr;len = sizeof(arr)/sizeof(arr[0]);
for(i=0;i<len;i++){printf("学号:%s 年龄:%d 成绩:%.3lf 地址:%s\n",p->num,p->age,p->score,p->addr);p++;
}

练习:使用结构体指针实现选票系统

使用结构体指针要注意:

1.解引用符要使用“->”

2.每次遍历完循环内要使用p++;

循环外要记得让p重新指向数组头

#include<stdio.h>
#include<string.h>struct XuanMin{char name[32];int  tickets;
};int main()
{struct XuanMin candidate[3];struct XuanMin max = {"0",0};int len;int i;int j;char tempname[32];int abandon;int abandtick = 0;struct XuanMin *p = candidate;len = sizeof(candidate)/sizeof(candidate[0]);for(i=0;i<len;i++){p->tickets = 0;printf("请输入候选人的名字:\n");scanf("%s",p->name);p++;}for(j=0;j<5;j++){p = candidate;abandon = 0;printf("请输入所要投的候选人的名字:\n");scanf("%s",tempname);for(i=0;i<3;i++){if(strcmp(tempname,p->name) == 0){p->tickets++;abandon = 1;}p++;}if(abandon == 0){printf("无所选候选人,弃票!\n");abandtick++;}}p = candidate;for(i=0;i<3;i++){printf("候选人:%s,票数:%d\n",p->name,p->tickets);p++;}p = candidate;for(i=0;i<3;i++){if(max.tickets < p->tickets){max = *p;p++;}}printf("%s当选,票数:%d,弃票:%d",max.name,max.tickets,abandtick);return 0;
}

输出为:

请输入候选人的名字:
aa
请输入候选人的名字:
bb
请输入候选人的名字:
cc
请输入所要投的候选人的名字:
aa
请输入所要投的候选人的名字:
aa
请输入所要投的候选人的名字:
bb
请输入所要投的候选人的名字:
cc
请输入所要投的候选人的名字:
a
无所选候选人,弃票!
候选人:aa,票数:2
候选人:bb,票数:1
候选人:cc,票数:1
aa当选,票数:2,弃票:1

结构体在函数中的应用:

一个返回值为结构体变量的函数,一般使用结构体指针进行定义:

struct XuanMin{char name[32];int  tickets;
};struct XuanMin* initcandidate(struct XuanMin *p)
{return p;
}

使用函数对选票系统进行封装如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>struct XuanMin{char name[32];int  tickets;
};struct XuanMin* initcandidate(struct XuanMin *p,int *total) //候选人初始化
{int i;if(p == NULL){printf("请输入候选总人数:\n");scanf("%d",total);p = (struct XuanMin*)malloc(*total*sizeof(struct XuanMin));}for(i=0;i<*total;i++){p->tickets = 0;printf("请输入第%d个候选人的名字:\n",i+1);scanf("%s",p->name);p++;}return p-*total;
}void printicket(struct XuanMin *p,int len)  //打印候选人信息
{int i;for(i=0;i<len;i++){printf("候选人:%s,票数:%d\n",p->name,p->tickets);p++;}
}int doVot(struct XuanMin *p,int len)  //选民进行投票
{int i;int j;int mark;int abandtick = 0;char tempname[32];struct XuanMin *pbak = p;for(j=0;j<5;j++){p = pbak;mark = 0;printf("请输入所要投的候选人的名字:\n");scanf("%s",tempname);for(i=0;i<3;i++){if(strcmp(tempname,p->name) == 0){p->tickets++;mark = 1;}p++;}if(mark == 0){printf("无所选候选人,弃票!\n");abandtick++;}}return abandtick;
}struct XuanMin* getMax(struct XuanMin *p,int len)  //找出票数最高的候选人
{struct XuanMin *max;int i;max = p;for(i=0;i<len;i++){if(max->tickets < p->tickets){max = p;}p++;}return max;
}int main()
{struct XuanMin *candidate = NULL;int *len;struct XuanMin *final;int abandon;candidate = initcandidate(candidate,len);printicket(candidate,*len);abandon = doVot(candidate,*len);printicket(candidate,*len);final = getMax(candidate,*len);printf("%s当选,票数:%d,弃票:%d",final->name,final->tickets,abandon);return 0;
}

注意:

使用结构体变量作为返回值的函数,一般使用的都是结构体指针,即返回的值是结构体指针。

结构体二级指针:

在上边的选票系统中使用initcandidate函数对候选人变量candidate进行初始化,包括候选人的姓名和票数,在initcandidate函数中我们将结构体指针变量candidate传递进去进行初始化,并返回给主函数中。

我们可以使用二级指针将结构体指针变量candidate的地址传递过去,进行操作,就可以将initcandidate初始化函数变为无返回值的函数。同理就像我们把表示候选人数量的变量len的地址传递过去,这样在初始化函数中获得候选人数量len的值以后,不需要使用返回值就能在主函数中获取len的值。

使用结构体二级指针代码如下:

void initcandidate(struct XuanMin **p,int *total)
{int i;if(*p == NULL){printf("请输入候选总人数:\n");scanf("%d",total);*p = (struct XuanMin*)malloc(*total * sizeof(struct XuanMin));}for(i=0;i<*total;i++){(*p)->tickets = 0;printf("请输入第%d个候选人的名字:\n",i+1);scanf("%s",(*p)->name);(*p)++;}*p = *p - *total;
}

注意:使用二级指针访问结构体变量时依旧使用“->”解引用操作符,而且要注意优先级使用“(*p)->tickets”、“(*p)++”这种格式来访问。

 

http://www.fp688.cn/news/155209.html

相关文章:

  • 带引导页的网站痘痘该怎么去除效果好
  • 广州网站建设加q.479185700网站公司
  • 四海网络网站建设建站网站在线客服系统 免费
  • 网站开发进程报告中国第一营销网
  • 学敏网站建设人民日报新闻
  • 建设银行潍坊支行网站百度搜索热度排名
  • 福建漳州网站建设公司网络营销的概念是什么
  • 安康网站建设公司关键词seo资源
  • 备案期间能否做网站解析线上营销方式
  • 旅游网站开发的国内外现状地推推广平台
  • wordpress数据连接失败1223免费seo工具大全
  • 华为建站网站推广优化方案
  • 大连市公众平台网站黄页网络的推广网站有哪些软件
  • 今日头条今天的最新新闻深圳专业seo外包
  • 西安做网站公司玖佰网络策划公司一般怎么收费
  • 域名网站建设如何优化培训体系
  • 影视制作做的好的有什么网站开发一个app需要多少钱?
  • 凉山州建设局网站百度云盘资源共享链接群组链接
  • 即墨做网站的北京seo推广系统
  • 本科毕业设计代做网站百度在全国有哪些代理商
  • 免费企业推广网站网络推广平台哪家公司最好
  • wordpress 添加下载按钮网站搜索优化技巧
  • app 设计网站建设百度大数据官网
  • 武汉做网站便宜百度云资源搜索引擎入口
  • 婚纱摄影网站设计模板如何开发一个网站
  • vs2013做的网站全网自媒体平台
  • 怎么做微信点击网站打赏看片营销型网站建设优化建站
  • 江门鹤山最新消息新闻seo的研究对象
  • 武汉免费建站系统个人网页怎么做
  • 微网站在线制作看广告赚钱的平台