嵌入式c语言学习--结构体指针选票系统2

要注意初始化,最好间接赋值字符串用strcmp

代码:

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

struct Person
{
	char name[50];
	int  tickets;
	
};

int main()
{
	//几位候选人
	struct Person candidate[3];
	struct Person max;
	struct Person *p=candidate;
	int j=0;
	int i=0;
	int voter[5];
	char votename[20];
	int none=0;
	
	//输入候选人的名字
	int len1=sizeof(candidate)/sizeof(candidate[0]);
	for(int i=0;i<len1;i++){
		printf("请输入第%d位候选人的名字\n",i+1);
		scanf("%s",p->name);
		p->tickets = 0;//一定要对传参的目标进行初始化
		p++;
			
	}
	p=candidate;
	printf("投票者请注意,候选人为%s ,%s ,%s \n",(p)->name,(p+1) ->name,(p+2) ->name);
	printf("投票者请注意,票为%p ,%p ,%p \n",&candidate[0].tickets,&candidate[1].tickets,&candidate[2].tickets);
	printf("投票者请注意,目前票为%d ,%d ,%d \n",candidate[0].tickets,candidate[1].tickets,candidate[2].tickets);
	puts("开始投票");
	//参与投票人数
	/*puts("请输入共有多少人参入投票");
	scanf("%d",&j);*/
	
	//投票
	int len2=sizeof(voter)/sizeof(voter[0]);
	for(int i = 0;i<len2;i++){
		none = 0;//每次循环初始化,不能在下面
		puts("请输入你支持的候选人的名字");
		memset(votename,'\0',sizeof(votename));//初始化
		scanf("%s",votename);//数组首就是地址可以不用加&
		for(int k=0;k<len1;k++){
		if(strcmp(votename,p->name)==0){//比较是否相等    //注意最好通过间接和strcmp进行结构体间接赋值
			p->tickets++;
			none=1;
			 p++;
			 
		}
		
		}
		if(none == 0){
		puts("哥们,你选的那位大神啊!没这人啊!");
		}
	}
	p=candidate;
	for(i=0;i<len1;i++){
		printf("名字 %s ,票数 %d\n",p->name,p->tickets);
		p++;
			
	}
	max =candidate[0];
	for(i=0;i<len1;i++){
		if(max.tickets<candidate[i].tickets)
			max=candidate[i];
		
	}
	printf("得票最高的为%s ,票数为%d \n",max.name,max.tickets);
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值