奇点QIDIAN 2023-12-04 00:11 采纳率: 0%
浏览 2

PTA选民投票 代码是错误的,具体要怎么改


#include<stdio.h>
#include<string.h>
struct candidate
{
    char name[9];
    int score;
};
int main()
{
    int i,j,n,m,k=0,f,o;
    scanf("%d",&n);
    struct candidate p[n];
    
    for(i=0;i<n;i++)
        p[i].score=0;
        
    for(i=0;i<n;i++)
    {
        scanf("%s",p[i].name);
    }
    scanf("%d",&m);
    struct candidate t[m];
    struct candidate q[m];
    for(i=0;i<m;i++)
    {
        scanf("%s",t[i].name);
    }

    for(i=0;i<m;i++)
    {
        f=0;
        for(j=0;j<n;j++)
        {
            o=1;
            for(k=0;t[i].name[k]!='\0';k++)
            {
                if(t[i].name[k]!=p[i].name[k]&&t[i].name[k]!=p[i].name[k]+32&&t[i].name[k]!=p[i].name[k]-32)
                {
                    f++;
                    o=0;
                     break;
                }
            }
            if(o==1)
            {
                p[j].score++;
            }
        }
        
        //printf("%d\n",f);
        
         if(f==n)
            {
                q[k]=t[i];
                k++;
        }
       
    }



    
    struct candidate w;
    for(i=0;i<n-1;i++)
    {
        for(j=1;j<n-1;j++)
        {
            if(p[j-1].score<p[j].score)
            {
                w=p[j-1];
                p[j-1]=p[j];
                p[j]=w;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%s:%d\n",p[i].name,p[i].score);
    }
    if(k>0)
    printf("invalid vote:\n");
    for(i=0;i<k;i++)
    {
        printf("%s\n",q[i].name);
    }
        return 0;
     }

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-04 02:02
    关注

    【相关推荐】



    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7547229
    • 这篇博客你也可以参考下:PTA练习题: 两个有序链表序列的合并
    • 除此之外, 这篇博客: PTA题目:递增有序顺序表的插入中的 答案: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      #include<stdio.h>
      int main(){
      	int n,i,k,t;
      	scanf("%d",&n);
      	int sum[n];
      	for(i=0;i<n;i++){
      		scanf("%d",&sum[i]);
      	}
      	scanf("%d",&k);
      	if(k<=sum[n-1]){
      	
      	for(i=0;i<n;i++){
      		if(k<=sum[i]){
      		t=i;
      		break;
      		}
      	}
      	for(i=n;i>=t;i--){
      		sum[i]=sum[i-1];
      	}
      	n++;
      	sum[t]=k;
      }
      	else{
      	sum[n]=k;
      	n++;
      	}
      	for(i=0;i<n;i++){
      		printf("%d,",sum[i]);
      	}
      }
      

      如果觉得博主写得不错的话,就点个赞或者关注吧!


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 12月4日