网站首页 网站地图
网站首页 > 娱乐人生 > c语言编程怎么选班长

c语言编程怎么选班长

时间:2026-03-18 06:22:47

在C语言中,选班长的方法可以有多种,具体取决于你想要的选举制度和程序复杂度。以下是几种常见的方法:

方法一:基于投票数的选举

定义一个结构体来存储每个学生的姓名和票数。

输入每个学生的票数,并存储在结构体数组中。

按照票数从高到低排序,输出票数最多的学生姓名。

```c

include

include

struct person {

char name;

int count;

};

int search_person(struct person p[], char *name, int n) {

for (int i = 0; i < n; i++) {

if (strcmp(p[i].name, name) == 0) {

return i;

}

}

return -1;

}

void new_person(struct person p[], char *name, int n) {

strcpy(p[n].name, name);

p[n].count = 1;

}

int main() {

int n;

printf("输入学生人数: ");

scanf("%d", &n);

struct person p = {0, 0};

int i, k;

char name;

for (i = 0; i < n; i++) {

printf("输入第%d张选票: ", i + 1);

scanf("%s", name);

int index = search_person(p, name, n);

if (index == -1) {

new_person(p, name, n);

k = 0;

} else {

p[index].count++;

k = index;

}

for (k = k - 1; k >= 0; k--) {

if (p[k].count > p[k + 1].count) {

int temp = p[k].count;

p[k].count = p[k + 1].count;

p[k + 1].count = temp;

}

}

printf("姓名%s, 票数:%d\n", p[i].name, p[i].count);

}

return 0;

}

```

方法二:基于轮流的选举

定义一个数组来存储所有候选人。

通过轮流的方式逐个淘汰票数最少的候选人,直到只剩下一个候选人。

```c

include

int select() {

int i = 0;

int loop = 0;

int loopSize = 2;

int len = 5;

int men;

int out = 0;

int start = 2;

for (i = 0; i < len; i++) {

men[i] = i + 1;

}

i = start - 1;

while (out < len - 1) {

if (men[i] != 0) {

loop++;

}

if (loop == loopSize) {

men[i] = 0;

printf("现在出局的人是: men[%d]: %d\n", i, men[i]);

out++;

printf("现在已经淘汰了%d个人\n", out);

loop = 0;

}

i++;

if (i == len) {

i = 0;

}

}

for (i = 0; i < len; i++) {

if (men[i] != 0) {

printf("班长是: men[%d]: %d\n", i, men[i]);

return men[i];

}

}

return 0;

}

int main() {

int len = 5;

int men = {1, 1, 1, 1, 1};

int result = select();

printf("当选班长是: %d\n", result);

return 0;

}

```

方法三:基于意见传递的选举

定义一个结构体来存储每个学生的姓名和收到的票数。

输入每个学生的意见,并统计每个学生的票数。