7-1 木块移动c语言
时间: 2023-11-27 09:06:30 浏览: 40
这里提供一种基于数组实现的简单的木块移动的 C 语言代码:
```c
#include <stdio.h>
#define BLOCK_NUM 10 // 木块数量
void print_blocks(int blocks[]) {
for (int i = 0; i < BLOCK_NUM; i++) {
printf("%d ", blocks[i]);
}
printf("\n");
}
int main() {
int blocks[BLOCK_NUM];
// 初始化木块数组
for (int i = 0; i < BLOCK_NUM; i++) {
blocks[i] = i + 1;
}
print_blocks(blocks); // 打印初始状态
int from, to; // 移动的起点和终点
while (scanf("%d %d", &from, &to) == 2) {
// 首先找到起点
int i;
for (i = 0; i < BLOCK_NUM; i++) {
if (blocks[i] == from) {
break;
}
}
// 找到终点
int j;
for (j = 0; j < BLOCK_NUM; j++) {
if (blocks[j] == to) {
break;
}
}
// 将起点上面的木块全部移回到原位
for (int k = i + 1; k < BLOCK_NUM; k++) {
blocks[k - 1] = blocks[k];
}
// 将起点放到终点上面
blocks[j - 1] = from;
print_blocks(blocks); // 打印移动后的状态
}
return 0;
}
```
在这个程序中,我们首先定义了一个常量 `BLOCK_NUM` 来表示木块的数量。然后我们使用一个数组 `blocks` 来表示木块的状态,初始状态下,每个木块的编号就是它在数组中的下标加一。
接着,我们通过一个 `print_blocks` 函数来打印木块的状态。该函数会依次输出数组中每个元素的值,然后换行。
在主函数中,我们首先使用一个循环来读入用户输入的移动指令。每次读入两个数字,分别表示要移动的木块的起点和终点。接着,我们使用两个循环来找到起点和终点在数组中的下标。然后,我们将起点上面的所有木块移回到原位,并将起点放到终点的上面。最后,我们打印移动后的状态。
值得注意的是,这段代码并没有对输入的数据做任何的错误处理,例如,如果用户输入的数字不在 1 到 10 的范围内,程序会出现错误。如果需要,可以在程序中添加相应的错误处理逻辑。