歌者文明清理员
发表于 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:}