用c语言设计一个完整的舞伴问题程序
时间: 2024-12-11 12:22:08 浏览: 6
在C语言中,我们可以设计一个简单的舞伴选择游戏,它通常涉及一个循环,让参与者输入他们的名字,并为他们分配舞伴。这里是一个基础的模拟示例:
```c
#include <stdio.h>
#include <stdlib.h> // 用于rand()和srand()
#define MAX_PARTICIPANTS 10
// 定义结构体表示一个人
typedef struct {
char name[50];
int dance_partner;
} Partner;
void initialize_partners(Partner partners[]) {
for (int i = 0; i < MAX_PARTICIPANTS; i++) {
partners[i].dance_partner = -1; // 初始化舞伴为空 (-1 表示未配对)
}
}
Partner* assign_dance_partner(Partner partners[], int n) {
for (int i = 0; i < n; i++) {
if (partners[i].dance_partner == -1) { // 如果舞伴位置空
// 随机选择一个未配对的人作为舞伴
int random_index = rand() % n;
while (partners[random_index].dance_partner != -1) {
random_index = rand() % n;
}
partners[i].dance_partner = random_index;
partners[random_index].dance_partner = i; // 对应舞伴也更新
}
}
return partners;
}
void print_partners(Partner partners[]) {
printf("舞会开始,舞伴配对结果:\n");
for (int i = 0; i < MAX_PARTICIPANTS; i++) {
if (partners[i].dance_partner != -1) {
printf("%s 跟 %s 跳舞.\n", partners[i].name, partners[partners[i].dance_partner].name);
} else {
printf("%s 单独一人.\n", partners[i].name);
}
}
}
int main() {
Partner participants[MAX_PARTICIPANTS];
srand(time(0)); // 设置随机数种子
// 初始化舞伴
initialize_partners(participants);
// 分配舞伴
assign_dance_partner(participants, MAX_PARTICIPANTS);
// 打印舞伴配对结果
print_partners(participants);
return 0;
}
阅读全文