歌者文明清理员 发表于 2023-5-11 19:46:41

isdkz 发表于 2023-5-11 19:45
我一开始能打开,多刷几次就405了

我也是,该死的taoyuanh在高山的论坛上@liuhongrun2023(未正确at),结果这个链接就是mod=team

isdkz 发表于 2023-5-11 19:47:14

歌者文明清理员 发表于 2023-5-11 19:45
这不是手机上发的
from fishc mobile呢

我在手机上点了使用电脑版

歌者文明清理员 发表于 2023-5-11 19:47:49

isdkz 发表于 2023-5-11 19:47
我在手机上点了使用电脑版

不对,真正的手机上是点不出帖子格式的按钮的,没反应

isdkz 发表于 2023-5-11 19:49:44

歌者文明清理员 发表于 2023-5-11 19:47
不对,真正的手机上是点不出帖子格式的按钮的,没反应




用电脑版就可以

歌者文明清理员 发表于 2023-5-11 19:54:21

isdkz 发表于 2023-5-11 19:49
用电脑版就可以

跟我妈的手机一样{:10_277:}
我的头像也太古老了吧

sfqxx 发表于 2023-5-11 20:10:37

isdkz 发表于 2023-5-11 19:45
我一开始能打开,多刷几次就405了

isdkz 发表于 2023-5-11 20:15:16

sfqxx 发表于 2023-5-11 20:10


你也405了?

sfqxx 发表于 2023-5-11 20:25:55

isdkz 发表于 2023-5-11 20:15
你也405了?

没有

啊这啧啧啧 发表于 2023-5-11 22:39:46

sfqxx 发表于 2023-5-11 19:06
当 n=27时,对于第一个while循环执行了三次,n分别变成9、3和1。在第三次迭代后,n=1,但程序还会继续执行w ...

输入6 4,还是会打印no{:10_266:}

啊这啧啧啧 发表于 2023-5-11 22:46:52

sfqxx 发表于 2023-5-11 19:13
举报优先看2楼

输入6 4;打印还是有no{:10_277:}

啊这啧啧啧 发表于 2023-5-11 23:02:03

isdkz 发表于 2023-5-11 19:25
你的代码有一些逻辑问题,所以当 n=27 的时候可能会打印 "no"。这是由于你的代码在检查 n 和 m 是否相等的 ...

#include<stdio.h>

int main(){
        printf("测试个数");
        int n,m,t;
        scanf("%d",&t);
        for(int i=1;i<=t;i++){
       
                scanf("%d",&n);
                scanf("%d",&m);
                int k=n;
                if(n<m){
                        printf("no");
                        continue;
                }
                if(n==1){
                   printf("yes");
                        continue;
                }
                while(n%3==0&&n!=1){
                        n=n/3;
                        if(n==m){
                        printf("yes");break;
                        }else if(n*2==m){
                        printf("yes");break;       
                        }
                }
                while(k%3==0&&k!=1){
                        k=(k/3)*2;
                        if(k==m){
                        printf("yes");break;
                        }else if(k/3==m){
                        printf("yes");break;       
                        }                 
                }if(n!=m&&n*2!=m){
                  printf("no");
                }
                if(k!=m&&k*2!=m){
                  printf("no");
                }
        }
        return 0;
}
//已经将代码进行改进,结果又改出错了,能不能只让他输出第一个判断的yes或者no

isdkz 发表于 2023-5-11 23:06:45

啊这啧啧啧 发表于 2023-5-11 23:02
//已经将代码进行改进,结果又改出错了,能不能只让他输出第一个判断的yes或者no

对于你想要只输出第一个判断的 "yes" 或 "no",你可以在每个判断后添加一个continue语句,这样就可以跳过本次循环的剩余部分,直接进入下一个循环。这样,一旦打印出 "yes" 或 "no",就会立即进入下一个测试,不会再打印第二个 "yes" 或 "no"。

你的代码还有一些逻辑错误,你在判断 n 或 k 是否等于 m 或 n 或 k 的两倍是否等于 m 的时候需要使用或者运算符||而不是和运算符&& 。此外,你需要在while循环中添加一个判断来检查是否已经打印出 "yes",如果已经打印出 "yes",那么就应该跳出while循环。

以下是修改后的代码:

#include<stdio.h>

int main(){
      printf("测试个数");
      int n,m,t;
      scanf("%d",&t);
      for(int i=1;i<=t;i++){
                int flag = 0; // 添加一个标志位来检查是否已经打印出 "yes"
                scanf("%d",&n);
                scanf("%d",&m);
                int k=n;
                if(n<m){
                        printf("no\n");
                        continue;
                }
                if(n==1){
                   printf("yes\n");
                   continue;
                }
                while(n%3==0&&n!=1){
                        n=n/3;
                        if(n==m || n*2==m){
                        printf("yes\n");
                        flag = 1; // 如果已经打印出 "yes",那么设置标志位为 1
                        break;
                        }
                }
                if(flag) continue; // 如果已经打印出 "yes",那么跳过本次循环的剩余部分,直接进入下一个循环
                while(k%3==0&&k!=1){
                        k=(k/3)*2;
                        if(k==m || k/3==m){
                        printf("yes\n");
                        flag = 1; // 如果已经打印出 "yes",那么设置标志位为 1
                        break;
                        }
                }
                if(flag) continue; // 如果已经打印出 "yes",那么跳过本次循环的剩余部分,直接进入下一个循环
                printf("no\n");
      }
      return 0;
}


这个修改后的版本应该可以满足你的需求。注意,我添加了\n来在每次打印 "yes" 或 "no" 后换行,这样输出的结果会更清晰。

啊这啧啧啧 发表于 2023-5-11 23:13:42

isdkz 发表于 2023-5-11 23:06
对于你想要只输出第一个判断的 "yes" 或 "no",你可以在每个判断后添加一个continue语句,这样就可以 ...

编译有些问题

啊这啧啧啧 发表于 2023-5-11 23:51:43

isdkz 发表于 2023-5-11 23:06
对于你想要只输出第一个判断的 "yes" 或 "no",你可以在每个判断后添加一个continue语句,这样就可以 ...

是我忘关窗口了{:10_269:}
页: 1 2 [3]
查看完整版本: 打印问题