知还啊啊 2024-03-06 22:52 采纳率: 66.7%
浏览 6
已结题

c++除法出现了问题?


#include <iostream>
#include <cstdio>
#include <math.h> 
using namespace std;
int main()
{
long long n;
scanf("%lld",&n);
if(n!=1&&n>0)
do{
if(n%2==1){
printf("%lld*3+1=%lld\n",n,n*3+1);
n*=3;
n+=1;
}
else if(n%2==0&&n!=0){
printf("%lld/2=%lld\n",n,n/2);
n/=2;
}
}while(n!=1);
printf("End");
return 0;
}

输入159487的时候中间就会停止,没办法运行,怎么办?

  • 写回答

8条回答 默认 最新

  • 阿莫 夕林 Java领域新星创作者 2024-03-06 22:54
    关注
    
    #include <iostream>
    #include <cstdio>
    #include <cmath> // 修改为cmath库,避免与using namespace std冲突
    using namespace std;
    
    int main()
    {
    long long n;
    scanf("%lld", &n);
    
    if (n != 1 && n > 0)
    {
        int count = 0; // 添加一个计数器
        do
        {
            if (n % 2 == 1)
            {
                printf("%lld*3+1=%lld\n", n, n * 3 + 1);
                n *= 3;
                n += 1;
            }
            else if (n % 2 == 0 && n != 0)
            {
                printf("%lld/2=%lld\n", n, n / 2);
                n /= 2;
            }
            
            count++; // 每次循环计数器加1
            
            // 添加判断条件,超过一定次数或n超出范围时结束循环
            if (count > 1000 || n > pow(2, 31) - 1)
            {
                printf("End");
                return 0;
            }
            
        } while (n != 1);
        
        printf("End");
        return 0;
    }
    else
    {
        printf("Invalid input");
        return 0;
    }
    }
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 专家已采纳回答 3月24日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)