题解 | #记票统计#

记票统计

https://www.nowcoder.com/practice/3350d379a5d44054b219de7af6708894

#include <stdio.h>
#include<stdio.h>
struct S{
    char str[20];
};
struct T{
    char str[20];
};
int main() {
    int n=0;
    scanf("%d",&n);
    struct T t[100];
    int arr[100]={0};
    for(int i=0;i<n;i++)
    {
        scanf("%s",t[i].str);
    }
    int num=0;
    scanf("%d",&num);
    struct S name[100];
    for(int i=0;i<num;i++)
        scanf("%s",name[i].str);
    int count=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<num;j++)
        {
            if(strcmp(t[i].str,name[j].str)==0)
                arr[i]++;
        }
    }
    int sum=0;
    for(int i=0;i<n;i++)
        sum+=arr[i];
    for(int i=0;i<n;i++)
        printf("%s : %d\n",t[i].str,arr[i]);
    printf("Invalid : %d",num-sum);
    return 0;
}

全部评论

相关推荐

思念SiN:你这里没有通过的主要原因应该是计算平均分数的时候,在你贴的代码的第23行: ```c b[i]=(sum-max-min)/(m-2); ``` 等式的右边实际上是两个`int`类型的变量在做除法,C语言里面得到的结果会是这个除法的整数部分,余数部分被舍弃了,也不会自动变成浮点数去做除法。所以虽然你使用了`b[i]`这个浮点数去接收结果,但是等式右边除法是先得到了一个整数,然后再被转换为浮点数再赋值给了`b[i]`。你可以按下面这样,在做除法之前,先进行类型转换,就能得到期望的结果: ```c b[i]=(float)(sum-max-min)/(float)(m-2); ```
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务