彩色旗子 发表于 2018-8-18 21:18:30

投票系统,求解惑一下。已经把自己搞晕了

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define PF printf
#define NUM 10

struct per//结构体PER 带有两个CAHR属性
{
        char name;
        int nuber;
}man={{"赵",0},{"钱",0},{"孙",0},{"李",0}};
void main()
{
        int i;
        int j=0;
        int max=0;
        int min=0;
        char a;
        PF("候选人有:%s %s %s %s\n",man.name,
                man.name,man.name,man.name);
        for(i=0;i<10;i++)
        {
                PF("输入候选人名称:");
                gets(a);
                if(strcmp(a,man.name)==0)
                {man.nuber +=1;}
                else if(strcmp(a,man.name)==0)
                {man.nuber +=1;}
                else if(strcmp(a,man.name)==0)
                {man.nuber +=1;}
                else if(strcmp(a,man.name)==0)
                {man.nuber +=1;}       
        }
       
       
                for(i=0;i<4;i++)
                {
                        if(man.nuber > man.nuber)
                        {
                                max=i;
                        }
                }
        PF("排名第一的是%s,得分%d\n",man.name,man.nuber);
        for(i=0;i<3;i++)
        {
                if(i!=max)
                {

                }
        }
        PF("排名最低的是%s,得分%d\n",man.name,man.nuber);
       
}

源码删了写写了删。然后保留成这样了。我只能做到输出最多票的那个人,但理想是,可以从大到小排列输出所有人,改来改去已经被自己搞蒙圈,说不定中间其实有正确的,先留帖。说不定等会明白了。

彩色旗子 发表于 2018-8-18 21:21:48

搜了下论坛,几乎都是直接输出就没管了,但是达不到心里预期很难受啊。

无符号整形 发表于 2018-8-18 21:24:30

min的值未修改。

彩色旗子 发表于 2018-8-18 21:28:16

无符号整形 发表于 2018-8-18 21:24
min的值未修改。

min的值,我还没有用上。最下面哪一行是前面没删除,本来想找到最大和最小的然后再去看中间的,,,是之前另一种写法用的。我现在需求的是 从大到小直接输出来所有人的名单,而不是直接全部不排序输出。我在想想,发源码的时候没整理就丢上来了,现在就缺这一步,再试试。嗯嗯,谢谢

人造人 发表于 2018-8-18 21:43:45

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

struct Per
{
        char name;
        int number;
} man = {{"赵", 3}, {"钱", 1}, {"孙", 9}, {"李", 5}};


void Swap(struct Per *a, struct Per *b)
{
        struct Per tmp = *a;
        *a = *b;
        *b = tmp;
}

void Sort(struct Per data[], int len)
{
        for(int i = 0; i < len; ++i)
        {
                for(int j = i + 1; j < len; ++j)
                {
                        if(data.number > data.number)
                                Swap(&data, &data);
                }
        }
}

int main(void)
{
        Sort(man, 4);
        for(int i = 0; i < 4; ++i)
        {
                printf("%s: %d\n", man.name, man.number);
        }

        return 0;
}

彩色旗子 发表于 2018-8-18 21:55:40

人造人 发表于 2018-8-18 21:43


谢谢大佬,我分析参考下。
页: [1]
查看完整版本: 投票系统,求解惑一下。已经把自己搞晕了