社区讨论
程序出bug求助
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lv9l7q33
- 此快照首次捕获于
- 2024/04/21 21:52 2 年前
- 此快照最后确认于
- 2024/04/22 12:59 2 年前
这是一个化简分数的程序(最下面),但是gf数组没有被赋值过,导致
CPPfor(int i=0;gf[i]!=0;i++){
cout << gf[i] << " ";
}
这部分没有输出
CPP#include <bits/stdc++.h>
using namespace std;
const int max_n=100;
int af[max_n];
int bf[max_n];
int gf[max_n];//公因数
double a,b;//a/b;
void fzsa(int k, int num){// fzs:分解质因数
for(int i=2;i<=k;i++){
if(k%i==0){
af[num]=i;
fzsa(k/i,num+1);
return;
}
}
}
void fzsb(int k, int num){// fzs:分解质因数
for(int i=2;i<=k;i++){
if(k%i==0){
bf[num]=i;
fzsb(k/i,num+1);
return;
}
}
}
void zgs(){//从这 zgs:查找公因数
int gbl=0,abl=0,bbl=0;
for(int i=2;i<=max(a,b);i++){
int ai=0,bi=0;
while(af[abl]==i){
ai++;//i值数
abl++;//遍历位置
}//检索af[]中的i值数
while(bf[bbl]==i){
bi++;//i值数
bbl++;//遍历位置
}//检索bf[]中的i值数
for(int j=gbl;j<=min(ai,bi)+gbl;j++){//将最少的i值数个i添加进去
gf[j]=i;
gbl++;
}
}
}//到这是bug所在区域
int main(){
memset(af,0,sizeof(af));
memset(bf,0,sizeof(bf));
memset(gf,0,sizeof(gf));
cin >> a >> b;
while(floor(a)!=a || floor(b)!=b){
a*=10;
b*=10;
}
fzsa(a,0);
fzsb(b,0);
cout << a << endl << b << endl;//从这
for(int i=0;af[i]!=0;i++){
cout << af[i] << " ";
}
cout << endl;
for(int i=0;bf[i]!=0;i++){
cout << bf[i] << " ";
}
cout << endl;
zgs();
```cpp
for(int i=0;gf[i]!=0;i++){
cout << gf[i] << " ";
}//到这是测试输出
//把gf里的数相乘分别除分子和分母 还没做
回复
共 0 条回复,欢迎继续交流。
正在加载回复...