投票系统,求解惑一下。已经把自己搞晕了
#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);
}
源码删了写写了删。然后保留成这样了。我只能做到输出最多票的那个人,但理想是,可以从大到小排列输出所有人,改来改去已经被自己搞蒙圈,说不定中间其实有正确的,先留帖。说不定等会明白了。 搜了下论坛,几乎都是直接输出就没管了,但是达不到心里预期很难受啊。 min的值未修改。 无符号整形 发表于 2018-8-18 21:24
min的值未修改。
min的值,我还没有用上。最下面哪一行是前面没删除,本来想找到最大和最小的然后再去看中间的,,,是之前另一种写法用的。我现在需求的是 从大到小直接输出来所有人的名单,而不是直接全部不排序输出。我在想想,发源码的时候没整理就丢上来了,现在就缺这一步,再试试。嗯嗯,谢谢 #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:43
谢谢大佬,我分析参考下。
页:
[1]