有男女若干人参加华尔兹舞会,男女各排一队。舞曲响起,依次从男女队伍的队头出一人配成舞伴,若两队初始人数不相同,则较长的一队中并未配对的人等待下一轮舞曲。现要求编写c语言一程序,模拟上述舞伴配对问题。
时间: 2024-10-21 14:15:24 浏览: 21
为了编写一个C语言程序来模拟这种舞伴配对问题,我们可以创建一个数组来代表男女人数,然后使用循环来配对。这里是一个简单的示例代码:
```c
#include <stdio.h>
#define MAX_PARTICIPANTS 100
int main() {
int men[MAX_PARTICIPANTS], women[MAX_PARTICIPANTS];
int num_men, num_women;
int i;
printf("请输入男性参与者人数:");
scanf("%d", &num_men);
printf("请输入女性参与者人数:");
scanf("%d", &num_women);
// 确保输入的数量都是非负的
if (num_men < 0 || num_women < 0) {
printf("输入错误:人数必须是非负的。\n");
return 1;
}
for (i = 0; i < num_men && i < num_women; i++) { // 配对直到一方完成
printf("第%d对舞伴是:\n", i+1);
printf("男:%d\n", men[i]);
printf("女:%d\n", women[i]);
}
// 处理剩余的人,如果有一方人数多余
if (num_men > num_women) { // 女生多
printf("\n剩余的男生:");
for (i = num_women; i < num_men; i++) {
printf("%d ", men[i]);
}
printf("\n");
} else if (num_women > num_men) { // 男生多
printf("\n剩余的女生:");
for (i = num_men; i < num_women; i++) {
printf("%d ", women[i]);
}
printf("\n");
}
return 0;
}
```
在这个程序中,用户会被询问男女各自的参与者人数,然后按照顺序配对并打印出来。最后,如果一方还有未配对的人,会显示剩余的那一方。
阅读全文