m0_58203183 2022-05-13 21:24 采纳率: 85.7%
浏览 26
已结题

一个简单的投票,希望也能将票数排序

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

struct person
{
char name[10];
int count;
}man[10]={"赵四",0,"张三",0,"王二",0,"麻子",0,"哎哎",0};

void main()
{

char leader_name[10];
int i,j,s;


printf("\t\t\t\t\t欢迎进入邦邦大赛投票界面\n\n\n");
printf("候选人:赵四 张三 王二 麻子 哎哎 \n\n\n\n\n");



for(i=0;i<10;i++)
{
    printf("第%d位投票,请写下支持的候选人名字:",(i+1));
    scanf("%s",leader_name);
    for(j=0;j<5;j++)
    {
        if(strcmp(leader_name,man[j].name)==0)
        {
            man[j].count++;
        }
    }
}

for(i=0;i<5;i++)
{
    printf(" %s 同学的票数:%d\n",man[i].name,man[i].count);

}


printf("\n\n");
for(i=0;i<5;i++)
{
    s=0;
    if(man[i].count>man[s].count)
    {
        s=i;
    }

}
printf("最终获胜的同学是:%s\n",man[s].name);
system("pause");

}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-05-13 21:52
    关注

    修改见注释,供参考:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct person
    {
        char name[10];
        int count;
    }man[10]={"赵四",0,"张三",0,"王二",0,"麻子",0,"哎哎",0};
    
    void main()
    {
        struct person tmp;   //修改
        char leader_name[10];
        int i,j,s;
    
        printf("\t\t\t\t\t欢迎进入邦邦大赛投票界面\n\n\n");
        printf("候选人:赵四 张三 王二 麻子 哎哎 \n\n\n\n\n");
    
        for(i=0;i<10;i++)
        {
            printf("第%d位投票,请写下支持的候选人名字:",(i+1));
            scanf("%s",leader_name);
            for(j=0;j<5;j++)
            {
                if(strcmp(leader_name,man[j].name)==0)
                {
                    man[j].count++;
                    break;  //修改
                }
            }
        }
    
        for(i=0;i<4;i++) //排序
        {
            for(j=0;j<4-i;j++)
            {
                if(man[j].count > man[j+1].count)//降序
                {
                    tmp=man[j];man[j]=man[j+1];man[j+1]=tmp;
                }
            }
        }
    
        for(i=0;i<5;i++)
        {
            printf(" %s 同学的票数:%d\n",man[i].name,man[i].count);
        }
    
        printf("\n\n");
        for(i=0,s=0;i<5;i++) //修改
        {
            //s=0;  修改
            if(man[i].count>man[s].count)
            {
                s=i;
            }
        }
        printf("最终获胜的同学是:%s\n",man[s].name);
        system("pause");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 hexo+github部署博客
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?