【发布时间】:2020-06-01 09:17:04
【问题描述】:
我正在做这个程序,在这个程序中,我可以打印间隙数字,一直到一个特定的值。操作是正确的,但是,由于某种原因,在打印了几个值后程序崩溃了,我该怎么做才能解决这个问题?
这是我的代码:
#include<math.h>
#include<stdlib.h>
using namespace std;
void gapful(int);
bool gapCheck(int);
int main(){
int n;
cout<<"Enter a top number: ";
cin>>n;
gapful(n);
system("pause");
return 0;
}
void gapful(int og){
for(int i=0; i<=og; i++){
fflush(stdin);
if(gapCheck(i)){
cout<<i<<" ";
}
}
}
bool gapCheck(int n){
int digits=0;
int n_save,n1,n2,n3;
if(n<100){
return false;
}
else{
n_save=n;
while(n>10){
n/=10;
digits++;
}
digits++;
n=n_save;
n1=n/pow(10, digits);
n2=n%10;
n3=n1*10 + n2;
if(n%n3 == 0){
return true;
}
else{
return false;
}
}
}
我愿意接受任何建议和 cmets,谢谢。 :)
【问题讨论】:
-
它在哪些输入上崩溃?它打印出的正确值是多少?
-
n1=n/pow(10, digits);-- 请勿将pow等浮点函数用于基于整数的工作。