用C语言写,木杆上的蚂蚁的代码
时间: 2024-02-22 20:57:02 浏览: 147
下面是一个简单的 C 语言程序,用来模拟 "木杆上的蚂蚁" 问题:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define L 10 // 木杆的长度
#define N 5 // 蚂蚁的数量
int main()
{
int pole[L+1] = {0}; // 木杆的状态,0表示没有蚂蚁,1表示有蚂蚁
int ant[N] = {0}; // 蚂蚁的位置,-1表示蚂蚁已经掉下去了
int dir[N] = {0}; // 蚂蚁的方向,-1表示向左,1表示向右
int time = 0; // 模拟的时间
// 初始化蚂蚁的位置和方向
srand(time(NULL));
for (int i = 0; i < N; i++) {
ant[i] = rand() % L;
dir[i] = rand() % 2 == 0 ? -1 : 1;
}
// 开始模拟
while (1) {
int flag = 0; // 用于判断是否所有蚂蚁都已经掉下去了
for (int i = 0; i < N; i++) {
if (ant[i] == -1) {
flag++;
continue;
}
if (ant[i] == 0 && dir[i] == -1) {
ant[i] = -1;
flag++;
} else if (ant[i] == L && dir[i] == 1) {
ant[i] = -1;
flag++;
} else {
pole[ant[i]] = 0;
ant[i] += dir[i];
if (pole[ant[i]] == 1) {
dir[i] = -dir[i];
}
pole[ant[i]] = 1;
}
}
if (flag == N) {
break;
}
time++;
}
// 输出结果
printf("模拟时间:%d\n", time);
for (int i = 0; i < N; i++) {
if (ant[i] == -1) {
printf("第%d只蚂蚁掉下去了\n", i+1);
} else {
printf("第%d只蚂蚁最终位置:%d\n", i+1, ant[i]);
}
}
return 0;
}
```
在上面的代码中,我们使用了一个长度为 L+1 的数组 pole 来表示木杆的状态,0 表示没有蚂蚁,1 表示有蚂蚁。我们还使用了两个数组 ant 和 dir 来分别表示蚂蚁的位置和方向,-1 表示蚂蚁已经掉下去了。在循环中,我们按照题目要求模拟蚂蚁的运动,如果蚂蚁遇到了木杆的边缘就会掉下去,如果遇到了其他蚂蚁就会改变方向。最后输出模拟的时间和每只蚂蚁的最终位置或掉下去的信息。
阅读全文