统计bug

题目描述

公司会把每个月出现BUG的人都记录下来,然后月底复盘时会统计该月BUG数最多的人,请帮忙统计出BUG数最多的两个人。

输入

读入N(3<=N<=10000),表示该月出现BUG的总次数,后面N行表示每次BUG的所属人(人名均为英文字母,且长度不超过10,并且保证同一个名字均为连续出现)

输出

样例

6
Faker
Faker
Faker
Xiaohu
UZI
UZI

输出

Faker UZI

#include<stdio.h>
#include<string.h>
int main()
{
    char a1[10000][13],a2[10000][13];
    int i,j,k,n,flag,a[10000]={0},b1,b2,b3;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        gets(a1[i]);
    }
    k=0;
    for(i=0;i<n;i++)	//从这里开始,讲每个出现过的字符串放在另一个数组str1[]中,保证在每种字符串都在str1[]中出现,且只出现一次;//
    {
        flag=1;
        for(j=0;j<n;j++)
        {
            if(strcmp(a1[i],a2[j])==0)
            {
                flag = 0;
                break;
            }
        }
        if(flag==1)
        {
            strcpy(a2[k],a1[i]);
            k++;
        }
    }//到这结束
    for(i=0;i<k;i++)//统计每种字符串出现的次数//
    {
        for(j=0;j<n;j++)
        {
            if(strcmp(a1[j],a2[i])==0)
            {
                a[i]++;
            }
       }
    }//到此结束//
    b1 = a[0];
    b2 = 0;
    for(i=1;i<k;i++)
    {
        if(b1<a[i])
        {
            b1=a[i];
            b2 = i;
        }
    }
    printf("%s ",a2[b2]);//输出次数最多的//
    
   if(b2==0)
   {
   	b1=0;
   	b3=0;
   	for(i=1;i<k;i++)
   	{
   		if(a[i]>b1)
   		{
		   b1=a[i];
		   b3=i;
	}
	   }
}
	   else{
	   	b1=0;
	   	b3=0;
	   	for(i=0;i<k;i++)
	   	{
	   		if(i==b2)
	   		continue;
	   		if(a[i]>b1)
	   		{
	   			b1=a[i];
	   			b3=i;
			   }
		   }
	   }
   
    printf("%s ",a2[b3]);//输出次数排第二的//
    return 0;
}

总结:

这种题要把每种字符串的种类在统计到另一个数组中,在经过两者的比较,统计次数,最后在每种字符串出现的次数中找寻最多的和其次的;

注释

普通数组没有赋初值,默认的数组元素值是随机数,不是0。
如果在定义数组时,数据类型前面加上关键字static,数组变成了静态数组;或者把数组定义在函数的外面,成为全局变量数组,这时数组元素的值自动赋值为0。
那要看你指的不赋初值是哪种
如果是char a[10];
那这10个元素都是随机的
如果是char a[10] = {‘a’,‘b’,‘c’};
那除了赋值的3个元素, 其他都是0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值