在下面提到的程序中,我将整数转换为向量,然后通过向量的每个元素检查数字的可分性。但是,在访问向量元素以按编号检查元素的可分性时,会发生运行时错误。
#include <iostream>
#include <algorithm>
#include<vector>
using namespace std;
int main(){
int testcase;
cin>>testcase; //number of testcases inputted
while(testcase--)
{
int number,i=0,count=0;
cin >>number; //number is inputted
int p=number;
vector<int> arr(100);
while(number){ //converting integer to array
arr[i]=number%10;
number=number/10;
cout<<arr[i];
if(p%arr[i]==0) //checking whether each element of array is divisible by number //this gives runtime error
count++;
i++;
}
cout<<endl<<count<<endl; //printing the count of elemnts of array divisible by number
}
return 0;
}
我已经注释掉了给出运行时错误的if条件(没有if条件,程序运行正常)。有人可以告诉我如何纠正它? 提前谢谢。
答案 0 :(得分:1)
在这种情况下
if(p%arr[i]==0)
arr[i]
可以等于0
。
因此,如果数字包含0,则程序将失败。
答案 1 :(得分:0)
如果number % 10 == 0
怎么办?
这意味着arr[i] = 0
因此表达式p%arr[i]
将导致未定义的行为,因为mod 0
是非法的。您的while循环应该类似于while(number % 10)
。