啊这啧啧啧 发表于 2023-3-2 18:08:24

C语言梅花桩问题,有点小错误不知道出在哪,求友友帮忙看看

小明从第一个桩走到第七个桩,再往回走,如此反复,求第五十步走到哪
#include <stdio.h>
int main()
{
int b,z,f;
for(b=1;b<=50;b++){
        for(z=1;z<8;z++){
                if(f=1){
                 f=go;
                }
                if(z=7){
                 f=back;
                }
                if(f=back){
                        z--;
                }
                if(f=go){
                        z++;
                }
        }
}
         printf("当走完50步后,小明站在第%d个桩上",z);
   return 0;
}
求友友指点一下

傻眼貓咪 发表于 2023-3-2 18:31:28

#include <stdio.h>

int main() {
    int steps = 50;
    int num_poles = 7;
    int current_pole = 1;
    int direction = 1; // 1表示向前走,-1表示向后走

    for (int i = 1; i <= steps; i++) {
      // 计算当前走到的桩号
      if (direction == 1) {
            current_pole++;
            if (current_pole > num_poles) {
                current_pole = num_poles - 1;
                direction = -1;
            }
      } else {
            current_pole--;
            if (current_pole < 1) {
                current_pole = 2;
                direction = 1;
            }
      }
    }

    printf("小明在第%d步时走到了第%d个桩\n", steps, current_pole);
    return 0;
}

啊这啧啧啧 发表于 2023-3-2 21:22:26

傻眼貓咪 发表于 2023-3-2 18:31


好像有点不对

傻眼貓咪 发表于 2023-3-3 07:27:45

本帖最后由 傻眼貓咪 于 2023-3-3 07:28 编辑

啊这啧啧啧 发表于 2023-3-2 21:22
好像有点不对

步 02 03 04 05 06 07 06 05 04 03 02 01 02 03 04 05 06 07 06 05 04 03 02 01 02 03 04 05 06 07 06 05 04 03 02 01 02 03 04 05 06 07 06 05 04 03 02 01 02 03
桩 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

第五十步是第三桩,请问哪里不对的地方吗?

啊这啧啧啧 发表于 2023-3-13 19:03:42

傻眼貓咪 发表于 2023-3-3 07:27
第五十步是第三桩,请问哪里不对的地方吗?

不应该是第二个桩吗,我一个一个数出来的{:5_96:}

傻眼貓咪 发表于 2023-3-13 19:12:22

啊这啧啧啧 发表于 2023-3-13 19:03
不应该是第二个桩吗,我一个一个数出来的

注意题目陷阱,小明的原始位置在第一桩,走第一步后小明在第二桩。

啊这啧啧啧 发表于 2023-3-14 15:23:41

傻眼貓咪 发表于 2023-3-13 19:12
注意题目陷阱,小明的原始位置在第一桩,走第一步后小明在第二桩。

啊啊啊啊啊,明白了,谢谢友友{:5_108:}

傻眼貓咪 发表于 2023-3-14 19:55:57

啊这啧啧啧 发表于 2023-3-14 15:23
啊啊啊啊啊,明白了,谢谢友友

{:10_256:}

不二猫猫 发表于 2023-3-20 03:22:56

在if语句中,使用赋值运算符“=”而不是相等运算符“==”,导致条件判断不正确。

在if语句中,判断f变量的值时应该使用整数类型的值,而不是字符串。

在循环结束后,应该输出小明在第50步时所在的位置,而不是在每一步结束后输出。

下面是修改后的代码:

#include <stdio.h>

int main()
{
    int b, z, f = 1; // 初始化为1,表示一开始是从第一个桩出发
    for (b = 1; b <= 50; b++) {
      if (f == 1) { // 如果是向前走
            z++; // 到下一个桩
            if (z == 7) { // 到达第7个桩,需要返回
                f = -1; // 将f设为-1,表示需要返回
            }
      } else { // 如果是返回
            z--; // 到上一个桩
            if (z == 1) { // 到达第1个桩,需要向前走
                f = 1; // 将f设为1,表示需要向前走
            }
      }
    }
    printf("当走完50步后,小明站在第%d个桩上\n", z);
    return 0;
}
修改后的代码中,使用了if语句的正确格式,同时还增加了f的初始值和注释,使程序更加清晰易懂。运行程序后,输出小明在第50步时所在的位置为3。
页: [1]
查看完整版本: C语言梅花桩问题,有点小错误不知道出在哪,求友友帮忙看看