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

网站建设服务费账务处理兰州seo推广

网站建设服务费账务处理,兰州seo推广,日本软银集团市值多少亿,专业品牌网站建设价格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.mmbaike.com/news/74246.html

相关文章:

  • 我国疫情最新消息聊城seo优化
  • 广州网站建设加q.479185700如何进行搜索引擎优化
  • html5 手机网站 模板广告策划
  • 哈尔滨模板建站多少钱seo关键词排名优化价格
  • 购物网站建设的需求seo整站优化一年价格多少
  • 南昌政府网站建设网络营销概述ppt
  • 温州手机网站制作公司电话自己怎么创建一个网站
  • 滨州做网站的电话百度图片识别搜索引擎
  • 赣州万图网络科技有限公司手机流畅优化软件
  • 高阳网站制作上海市人大常委会
  • 做网站在哪里做深圳百度推广
  • 安义网站建设网络推广及销售
  • 做to b的网站免费seo
  • 国外网页设计欣赏网站岳阳网站设计
  • 怎么创建一个网站卖东西网站如何发布
  • 宝塔面板做网站绑定域名电商推广联盟
  • 公司网站谁负责做搜索引擎优化的内容包括
  • 手机网站如何建站it教育培训机构
  • 免费做电子请帖的网站西安百度seo推广
  • 接做名片的网站百度快照怎么发布
  • 苏州哪里有做淘宝网站的百度广告安装入口
  • wordpress css样式整站优化推广
  • 有什么设计logo网站今日新闻网
  • 北京网站建设最便宜的公司哪家好推广优化工具
  • 电玩网站开发磁力搜索引擎torrentkitty
  • 单页静态网站怎么做互联网推广渠道有哪些
  • 自己做的网站怎么才有用户访问软文广告范文
  • 上海网站托管网络营销策略都有哪些
  • 做网站的前提哪个平台推广效果最好
  • 网站建设分金手指排名二九新闻稿