竞选的选票问题(竞选人不确定)C语言

题目描述

 到了竞选班干部的时候了, 现有n个数, 代表所投人选的编号。请问哪位编号的同学选票最多。(若有多人, 则输出编号最小的)

输入

 第一行输入一个整数n(1 ≤ n ≤ 1000)。
 第二行输入n个整数a0, a1, a2, ... an-1(1 ≤ ai ≤ 1000)。

输出

 输出占一行。为票数最多人的编号。

样例输入 Copy
6
4 1 7 8 8 5
样例输出 Copy
8

分析:肯定是数组方面问题

两个关键1.重复次数最多的a[i]的值;2.重复次数一定时,a[i]数值最小。

#include<stdio.h>
int main()
{
     int a[1000],n,count=0,max=1,t,i,j;//t是临时变量储存a[i]的值,count是计a[i]重复的次数,max是重复次数的最大值。
     scanf("%d",&n);
     for(i=0;i<n;i++){
     	scanf("%d",&a[i]);
	 }//输入数组a[i],代表所投的票。
	 for(i=0;i<n;i++){//这是先取出一个数,
	 	count=0;//(这个很关键,确保计每一个a[i]的重复次数时,都是从0开始)
	 	for(j=0;j<n;j++){//然后将这个数与数组中的数进行比较,
	 		if(a[i]==a[j])count++;//如果相等则+1
		 }
		 if(count>max){//重复次数>max,则这个a[i]更符合。第一种情况:取重复次数最大
		 	t=a[i];
		 }
		 else if(count==max){
		 	if(a[i]<t)t=a[i];//第二种情况:重复次数一样,取最值更小的。
		 }
	 }
	 	printf("%d",t);
	 	return 0;
}

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值