kbq1415 发表于 2025-4-19 17:40:53

总是异常结束运行。

int a_10(int x)
{
    if(x=0)
    {
      return 1;
    }
    if(x>0)
    {
      return a_10(x-1)*10;
    }
    if(x<0)
    {
      throw x;
    }
}
class Fs
{
public:
    int z;
    int m;
    Fs(int a);
    Fs(long double s);
    Fs(int c,int x):z(c),m(x) {}
};
Fs::Fs(int a)
{
    m=rand()%11;
    z=a*m;
}
Fs::Fs(long double s)
{
    int d=-1;
    int con;
    int cons;
    int r;
    int ss=int(s);
    while(int(s)!=s&&s<std::numeric_limits<long double>::max()/10&&s<std::numeric_limits<int>::max()/10)
      s*=10;
    for(int c = 0; c <= 100; c++) {
      r=int(s)%10;
      for(int i = 0; i <= 100; i++) {
            if(r!=0) {
                con =100-i+1;
                break;
            }
      }
    }
    for(int c = 0; c <= 100; c++) {
      r=ss%10;
      for(int i = 0; i <= 100; i++) {
            if(r!=0) {
                cons =100-i+1;
                break;
            }
      }
    }
    m=a_10(con-cons);
    z=s;
}
上边是我编的一个头文件,下面是主文件#include <iostream>
#include "Fs.h"
using namespace std;
int main() {
    int t;
    int w;
    cout << "请输入一个分子和分母,用逗号隔开"<< endl;
    cin >> t >> w;
    Fs s(t,w);
    cout << "建造分数成功"<< endl;
    cout << "再来一个转换的,整数"<< endl;
    cin >> t;
    cout << "输入进来了"<< endl;
    Fs d(t);
    cout << "建造成功"<< endl;
    cout << "它的分母是"<<d.m<<"而分子是"<<d.z<< endl;
    try
    {
      long double l;
      cout << "再来一个实数的吧"<< endl;
      cin >> l;
      Fs f(l);
      cout << "它的分子是"<<f.z<<"而分母是"<<f.m<< endl;
    }
    catch(int)
    {
      cout << "出错了"<< endl;
    }
    return 0;
}
然后他每一次就是到输入完实数实数进去以后就显示运行结束,是为啥呀?

FishC 发表于 2025-4-19 17:42:21

代码问题分析及解决方案

该代码存在两个关键问题:


[*]条件判断错误
原代码:if(x=0)(单等号赋值操作)
应改为:if(x == 0)(双等号比较操作)

[*]缺少负数处理逻辑
当 x<0 时没有返回值,导致未定义行为


修正后代码

int a_10(int x)
{
    if(x == 0)// 修正判断条件
    {
      return 1;
    }
    if(x > 0)
    {
      return a_10(x-1) * 10;
    }
    // 处理负数情况
    return 0;// 或抛出异常/返回错误码
}



[*]建议添加参数校验:assert(x >= 0)
[*]该函数功能是计算10的x次方(当x≥0时)
[*]负数情况可根据实际需求修改返回值逻辑


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

qxds 发表于 7 天前

换了操作系统以后(WIN10) 发生的很奇怪的现象 (之前也是WIN10)

java环境

idea 内运行main 方法 或者类似 testNG junt 方法

用debug模式运行方法结束后JVM会立刻退出 很正常

但是用run模式 运行 后 JVM 要等待很久后才会退出 大部分时间需要用ctrl F2 杀死任务

换过 JDK和 其他版本的 idea 问题依旧感觉是系统问题但是不知道如何解决
页: [1]
查看完整版本: 总是异常结束运行。