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

结构体数组经典运用---选票系统

结构体的引入

1、概念:结构体和其他类型基础数据类型一样,例如int类型,char类型,float类型等。整型数,浮点型数,字符串是分散的数据表示,有时候我们需要用很多类型的数据来表示一个整体,比如学生信息。类比与数组: 数组是元素类型一样的数据集合,如果是元素类型不同的数据集合,就要用到结构体了。结构体可以让不同数据类型同时存在,将不同类型的数据存放在一起,作为一个整体进行处理。

2、声明方式:在主函数外以,首先使用一个关键字struct,使其接下来表示一个结构体;其次后面跟着一个名称(名称可随意定义),为此来创建数据对象。(结尾记得加分号,不然会报错)

3、使用方式:在主函数内,用标准结构struct+主函数外定义的名称+任意名称(这里的名称是分类出数值不同的角色),给结构体赋值是任意名称.数据对象(这里的点运算符来访问结构体中的成员变量(域));也可以直接在标准结构struct+主函数外定义的名称+任意名称后加上花括号并对应数据对象进行赋值。

我们以列举学生信息为例展示代码:

#include <stdio.h>
#include <string.h>

struct Student
{
	int num;
	char name[64];
	int age;
	double sorce;
	char add[64];
};

int main()
{
	struct Student stu1;
	struct Student stu2={2,"张三",22,100,"北京"};
	
	stu1.num=1;//点运算符来访问结构体中的成员变量(域)
	strcpy(stu1.name,"李四");
	stu1.age=20;
	stu1.sorce=99;
	strcpy(stu1.add,"深圳");
	
	printf("序号是%d,名字是%s,年龄是%d,分数是%lf,住址是%s\n",stu1.num,stu1.name,stu1.age,stu1.sorce,stu1.add);
	printf("序号是%d,名字是%s,年龄是%d,分数是%lf,住址是%s\n",stu2.num,stu2.name,stu2.age,stu2.sorce,stu2.add);
	
	if(stu1.sorce>stu2.sorce)
	{
		printf("成绩较高的是%d号%s\n",stu1.num,stu1.name);
	}
	else
	{
		printf("成绩较高的是%d号%s\n",stu2.num,stu2.name);
	}
	return 0;
}

结构体与数组结合经典运用---选票系统

代码展示

#include <stdio.h>
#include <string.h>

struct XuanMin
{
	char name[64];
	int tickets;
};

int main()
{
	struct XuanMin a[3];//三位选手
	struct XuanMin max;//比较三位选手得票最大值
	
	int number = 5;//5个人参与投票
	char tempname[64];//投票的名字
	int feipiao = 0;//没选中的票
	
	int i;
	int j;
	int c = 0;//一个判断逻辑
	
	int len = sizeof(a)/sizeof(a[0]);
	
	for(i = 0;i < len;i++)
	{
		a[i].tickets = 0;
		printf("请输入第%d个选民的名字:\n",i+1);
		scanf("%s",a[i].name);
	}
	
	for(i = 0;i < 5;i++)
	{
		c = 0;//每次循环让其等于0
		printf("请输入你要投给谁\n");
		memset(tempname,'\0',sizeof(tempname));//每次清空一下
		scanf("%s",tempname);//输入选中的选民
		for(j = 0;j < len;j++)
		{
			if(strcmp(tempname,a[j].name)==0)//选民与选手匹配,票数递增
			{
				a[j].tickets++;
				c = 1;//如果匹配后票数增加并等于1
			}
		}
		if(c == 0)//还是为0说明没有匹配选手,则为没选中的票
		{
			printf("没有此选手,投票失败\n");
			feipiao++;
		}
	}
	
	for(i = 0;i < len;i++)
	{
		printf("名字:%s,票数:%d\n",a[i].name,a[i].tickets);
	}
	
	max=a[0];//让最大值先等于第一个人
	for(i = 1;i < len ;i++)
	{
		if(max.tickets < a[i].tickets)
		{
			max = a[i];//将三个人票数最多的赋给最大值
		}
	}
	
	printf("%s以%d票当选!!!废票是%d\n",max.name,max.tickets,feipiao);
	return 0;
}


http://www.kler.cn/a/106664.html

相关文章:

  • docker与大模型(口语化原理和实操讲解)
  • 2、开发工具和环境搭建
  • 蓝队技术学习
  • uniapp ios app以framwork形式接入sentry
  • Linux——Linux环境基础开发工具使用
  • 跟着尚硅谷学vue2—基础篇4.0
  • Mybatis中延迟加载~
  • MySQL基础入门教程(InsCode AI 创作助手)
  • 【JavaScript】零碎知识点汇总
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于 CAN 总线的车辆数据采集与远程监控系统研发(下)
  • 【数据结构】模拟实现栈和队列
  • 计算机网络相关硬件介绍
  • Flutter extended_image库设置内存缓存区大小与缓存图片数
  • input实现手机验证码输入
  • 代码随想录算法训练营第3天| 203.移除链表元素 、 707.设计链表 、 206.反转链表
  • sqoop连接MYSQL报错处理
  • 基于PyTorch的MNIST手写体分类实战
  • Mac版好用的Git客户端 Fork 免激活
  • c# 操作word中的表格 批量复制和批量插入
  • 修改svc的LoadBalancer的IP引发的惨案
  • Nacos的安装和实操
  • 2023NOIP A层联测19-多边形
  • 基于nodejs+vue人脸识别考勤管理系统的设计与实现
  • 正点原子嵌入式linux驱动开发——Linux LCD驱动
  • day06-Flex布局
  • 微信小程序input输入字母自动转大写不生效问题解决