鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 啊这啧啧啧

打印问题

[复制链接]
发表于 2023-5-11 19:46:41 | 显示全部楼层
isdkz 发表于 2023-5-11 19:45
我一开始能打开,多刷几次就405了

我也是,该死的taoyuanh在高山的论坛上@liuhongrun2023(未正确at),结果这个链接就是mod=team
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 19:47:14 | 显示全部楼层
歌者文明清理员 发表于 2023-5-11 19:45
这不是手机上发的
from fishc mobile呢

我在手机上点了使用电脑版
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 19:47:49 | 显示全部楼层
isdkz 发表于 2023-5-11 19:47
我在手机上点了使用电脑版

不对,真正的手机上是点不出帖子格式的按钮的,没反应
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


Screenshot_2023-05-11-19-48-33-988_com.android.browser.jpg


用电脑版就可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 19:54:21 | 显示全部楼层
isdkz 发表于 2023-5-11 19:49
用电脑版就可以

跟我妈的手机一样
我的头像也太古老了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 20:10:37 | 显示全部楼层
isdkz 发表于 2023-5-11 19:45
我一开始能打开,多刷几次就405了

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 20:15:16 | 显示全部楼层

你也405了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-11 20:25:55 | 显示全部楼层

没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 22:46:52 | 显示全部楼层

输入6 4;打印还是有no
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 23:02:03 | 显示全部楼层
isdkz 发表于 2023-5-11 19:25
你的代码有一些逻辑问题,所以当 n=27 的时候可能会打印 "no"。这是由于你的代码在检查 n 和 m 是否相等的 ...
  1. #include<stdio.h>

  2. int main(){
  3.         printf("测试个数");
  4.         int n,m,t;
  5.         scanf("%d",&t);
  6.         for(int i=1;i<=t;i++){
  7.        
  8.                 scanf("%d",&n);
  9.                 scanf("%d",&m);
  10.                 int k=n;
  11.                 if(n<m){
  12.                         printf("no");
  13.                         continue;
  14.                 }
  15.                 if(n==1){
  16.                    printf("yes");
  17.                         continue;
  18.                 }
  19.                 while(n%3==0&&n!=1){
  20.                         n=n/3;
  21.                         if(n==m){
  22.                         printf("yes");break;
  23.                         }else if(n*2==m){
  24.                         printf("yes");break;       
  25.                         }
  26.                 }
  27.                 while(k%3==0&&k!=1){
  28.                         k=(k/3)*2;
  29.                         if(k==m){
  30.                         printf("yes");break;
  31.                         }else if(k/3==m){
  32.                         printf("yes");break;       
  33.                         }                   
  34.                 }if(n!=m&&n*2!=m){
  35.                   printf("no");
  36.                 }
  37.                 if(k!=m&&k*2!=m){
  38.                   printf("no");
  39.                 }
  40.         }
  41.         return 0;
  42. }
复制代码

//已经将代码进行改进,结果又改出错了,能不能只让他输出第一个判断的yes或者no
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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  循环。

以下是修改后的代码:

  1. #include<stdio.h>

  2. int main(){
  3.         printf("测试个数");
  4.         int n,m,t;
  5.         scanf("%d",&t);
  6.         for(int i=1;i<=t;i++){
  7.                 int flag = 0; // 添加一个标志位来检查是否已经打印出 "yes"
  8.                 scanf("%d",&n);
  9.                 scanf("%d",&m);
  10.                 int k=n;
  11.                 if(n<m){
  12.                         printf("no\n");
  13.                         continue;
  14.                 }
  15.                 if(n==1){
  16.                    printf("yes\n");
  17.                    continue;
  18.                 }
  19.                 while(n%3==0&&n!=1){
  20.                         n=n/3;
  21.                         if(n==m || n*2==m){
  22.                         printf("yes\n");
  23.                         flag = 1; // 如果已经打印出 "yes",那么设置标志位为 1
  24.                         break;
  25.                         }
  26.                 }
  27.                 if(flag) continue; // 如果已经打印出 "yes",那么跳过本次循环的剩余部分,直接进入下一个循环
  28.                 while(k%3==0&&k!=1){
  29.                         k=(k/3)*2;
  30.                         if(k==m || k/3==m){
  31.                         printf("yes\n");
  32.                         flag = 1; // 如果已经打印出 "yes",那么设置标志位为 1
  33.                         break;
  34.                         }
  35.                 }
  36.                 if(flag) continue; // 如果已经打印出 "yes",那么跳过本次循环的剩余部分,直接进入下一个循环
  37.                 printf("no\n");
  38.         }
  39.         return 0;
  40. }
复制代码


这个修改后的版本应该可以满足你的需求。注意,我添加了  \n  来在每次打印 "yes" 或 "no" 后换行,这样输出的结果会更清晰。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

编译有些问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是我忘关窗口了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 15:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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