鱼C论坛

 找回密码
 立即注册
查看: 3343|回复: 8

投票系统问题---结构体(有源码有图- -有真相)

[复制链接]
发表于 2011-5-26 22:57:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天看完小甲鱼老师的视频(结构体),自己编了一个投票系统,可是有一个小问题,希望小甲鱼老师能给予解决,谢谢啦!!
下面附上源码和截图:






#include<stdio.h>
#include<string.h>
void welcome(void)
{
        printf("                         *****************************\n");
        printf("                         *                           *\n");
        printf("                         *     欢迎进入投票系统      *\n");
    printf("                         *                           *\n");
        printf("                         *****************************\n");
}
struct people
{
        char name[20];
        int votes;
}person[100];
void main()
{
        void get_name(struct people *p , int n);
        void vote(struct people *p, int n , int m);
    void print_votes(struct people *p, int n);
        void vote_result(struct people *p, int n);
        welcome();
    struct people *p;
        p=person;
        int n , m;
        printf("请输入候选人的总数:");
        scanf("%d",&n);
        printf("\n");
        printf("请输入选民总数:");
        scanf("%d",&m);
        printf("\n");
        get_name(p,n);
        vote(p,n,m);
        print_votes(p,n);
        vote_result(p,n);
}
void get_name(struct people *p, int n)
{
        int i=1;
        for(p=person;p<person+n;p++)
        {
                printf("请输入第 %d 个候选人的姓名:",i++);
                scanf("%s",p->name);
                printf("\n");
        }
        printf("     ***************************!!完美分割线!!****************************\n\n");
}
void vote(struct people *p, int n ,int m)
{
        int i;
        char name1[20];
        for(i=1;i<=m;i++)
        {
                printf("第  %d  位投票者投票,请写下支持的候选人名字:",i);
                gets(name1);
                for(p=person;p<person+n;p++)
                {
                        if(strcmp(p->name,name1)==0)
                                p->votes++;
                }
                printf("\n");
        }
        printf("     ***************************!!完美分割线!!****************************\n\n");
}
void print_votes(struct people *p, int n)
{
        for(p=person;p<person+n;p++)
        {
                printf("%s 同学得票数为:",p->name);
                printf("%d\n",p->votes);
        }
    printf("     ***************************!!完美分割线!!****************************\n\n");
}
void vote_result(struct people *p, int n)
{
        int i , max=0 , k;
        int str[100];
        for(i=0;i<n;i++)
        {
                str[i]=(p++)->votes;
        }
        for(i=0;i<n;i++)
        {
                if(str[i]>max)
                {
                        max=str[i];
                        k=i;
                }
        }
        printf("本次投票选举结果,当选者为:%s\n\n",person[k].name);
}






                               
登录/注册后可看大图


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-26 22:59:16 | 显示全部楼层
补充一下 ,问题在第一位投票者,不给输入就直接跳到第2位了- -:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-2 01:24:04 | 显示全部楼层
void vote(struct people *p, int n ,int m)
{
    int i;
    char name1[20];
    getchar();       //把前面输入完后的回车符接收掉。
    for(i=1;i<=m;i++)
    {
        printf("第  %d  位投票者投票,请写下支持的候选人名字:",i);      
        gets(name1);        
        for(p=person;p<person+n;p++)
        {
            if(strcmp(p->name,name1)==0)
                p->votes++;
        }
        printf("\n");
    }
    printf("     ***************************!!完美分割线!!****************************\n\n");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-2 01:25:42 | 显示全部楼层
增加上这个“getchar();       //把前面输入完后的回车符接收掉。”就好了,还不错:D
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-2 01:31:46 | 显示全部楼层
//还有个问题,我是把     void vote_result(struct people *p, int n)  改成这样才行的哦
void vote_result(struct people *p, int n)
{
    int i , max=0 , k;
    int str[100];
    for(i=0;i<n;i++)
    {
        str[i]=(p++)->votes;
    }
    for(i=0;i<n;i++)
    {
        if(str[i]>max)
        {
            max=str[i];
            k=i;
        }
    }
    printf("本次投票选举结果,当选者为:%s\n\n",person[k].name);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-2 08:36:14 | 显示全部楼层
很不错哟,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 18:26:30 | 显示全部楼层
tianyou 发表于 2011-6-2 01:31
//还有个问题,我是把     void vote_result(struct people *p, int n)  改成这样才行的哦
void vote_resu ...

谢谢这位热心的鱼油!!!!!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-22 18:27:14 | 显示全部楼层
578786647 发表于 2011-6-2 08:36
很不错哟,呵呵

呵呵                           谢谢啊                     那时候刚学,什么都不会。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-8-1 15:44:09 | 显示全部楼层
不错哦,支持一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 05:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表