总是异常结束运行。
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;
}
然后他每一次就是到输入完实数实数进去以后就显示运行结束,是为啥呀? 代码问题分析及解决方案
该代码存在两个关键问题:
[*]条件判断错误
原代码: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 小助理,如未能正确解答您的问题,请继续追问。 换了操作系统以后(WIN10) 发生的很奇怪的现象 (之前也是WIN10)
java环境
idea 内运行main 方法 或者类似 testNG junt 方法
用debug模式运行方法结束后JVM会立刻退出 很正常
但是用run模式 运行 后 JVM 要等待很久后才会退出 大部分时间需要用ctrl F2 杀死任务
换过 JDK和 其他版本的 idea 问题依旧感觉是系统问题但是不知道如何解决
页:
[1]