鱼C论坛

 找回密码
 立即注册
查看: 776|回复: 8

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

[复制链接]
发表于 2023-3-2 18:08:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小明从第一个桩走到第七个桩,再往回走,如此反复,求第五十步走到哪
#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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

 楼主| 发表于 2023-3-2 21:22:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-3 07:27:45 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2023-3-3 07:28 编辑


步 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


第五十步是第三桩,请问哪里不对的地方吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-13 19:03:42 | 显示全部楼层
傻眼貓咪 发表于 2023-3-3 07:27
第五十步是第三桩,请问哪里不对的地方吗?

不应该是第二个桩吗,我一个一个数出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-13 19:12:22 | 显示全部楼层
啊这啧啧啧 发表于 2023-3-13 19:03
不应该是第二个桩吗,我一个一个数出来的

注意题目陷阱,小明的原始位置在第一桩,走第一步后小明在第二桩。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-14 15:23:41 | 显示全部楼层
傻眼貓咪 发表于 2023-3-13 19:12
注意题目陷阱,小明的原始位置在第一桩,走第一步后小明在第二桩。

啊啊啊啊啊,明白了,谢谢友友
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 19:55:57 | 显示全部楼层
啊这啧啧啧 发表于 2023-3-14 15:23
啊啊啊啊啊,明白了,谢谢友友

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表