鱼C论坛

 找回密码
 立即注册
查看: 539|回复: 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
  1. #include <stdio.h>

  2. int main() {
  3.     int steps = 50;
  4.     int num_poles = 7;
  5.     int current_pole = 1;
  6.     int direction = 1; // 1表示向前走,-1表示向后走

  7.     for (int i = 1; i <= steps; i++) {
  8.         // 计算当前走到的桩号
  9.         if (direction == 1) {
  10.             current_pole++;
  11.             if (current_pole > num_poles) {
  12.                 current_pole = num_poles - 1;
  13.                 direction = -1;
  14.             }
  15.         } else {
  16.             current_pole--;
  17.             if (current_pole < 1) {
  18.                 current_pole = 2;
  19.                 direction = 1;
  20.             }
  21.         }
  22.     }

  23.     printf("小明在第%d步时走到了第%d个桩\n", steps, current_pole);
  24.     return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-2 18:31:28 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main() {
  3.     int steps = 50;
  4.     int num_poles = 7;
  5.     int current_pole = 1;
  6.     int direction = 1; // 1表示向前走,-1表示向后走

  7.     for (int i = 1; i <= steps; i++) {
  8.         // 计算当前走到的桩号
  9.         if (direction == 1) {
  10.             current_pole++;
  11.             if (current_pole > num_poles) {
  12.                 current_pole = num_poles - 1;
  13.                 direction = -1;
  14.             }
  15.         } else {
  16.             current_pole--;
  17.             if (current_pole < 1) {
  18.                 current_pole = 2;
  19.                 direction = 1;
  20.             }
  21.         }
  22.     }

  23.     printf("小明在第%d步时走到了第%d个桩\n", steps, current_pole);
  24.     return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

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

使用道具 举报

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


  1. 步 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
  2. 桩 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 | 显示全部楼层
  1. 在if语句中,使用赋值运算符“=”而不是相等运算符“==”,导致条件判断不正确。

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

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

  4. 下面是修改后的代码:

  5. #include <stdio.h>

  6. int main()
  7. {
  8.     int b, z, f = 1; // 初始化为1,表示一开始是从第一个桩出发
  9.     for (b = 1; b <= 50; b++) {
  10.         if (f == 1) { // 如果是向前走
  11.             z++; // 到下一个桩
  12.             if (z == 7) { // 到达第7个桩,需要返回
  13.                 f = -1; // 将f设为-1,表示需要返回
  14.             }
  15.         } else { // 如果是返回
  16.             z--; // 到上一个桩
  17.             if (z == 1) { // 到达第1个桩,需要向前走
  18.                 f = 1; // 将f设为1,表示需要向前走
  19.             }
  20.         }
  21.     }
  22.     printf("当走完50步后,小明站在第%d个桩上\n", z);
  23.     return 0;
  24. }
  25. 修改后的代码中,使用了if语句的正确格式,同时还增加了f的初始值和注释,使程序更加清晰易懂。运行程序后,输出小明在第50步时所在的位置为3。
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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