c++ - 在循环中使用模数会导致分段错误(核心转储)
问题描述
我正在编写一个程序来查找数字的因数。
我的逻辑是:if ((number % i) == 0)
那么我们有一个因素。但是如果你附加的代码,它会编译没有错误,但会在程序中崩溃。
如果将模运算符替换为其他任何内容,则程序运行良好。那我做错了什么??
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int number;
vector<int> factors;
cout << "enter a number: ";
cin >> number;
for (int i = 0; i < number; i++)
{
if ((number % i) == 0)
{
factors.push_back(i);
}
}
// display results
cout << "factors are: ";
for (int i = 0; i < factors.size(); i++)
{
if (i < (factors.size()-1)) cout << factors[i] << ", ";
if (i == (factors.size()-1)) cout << factors[i];
}
return 0;
}
解决方案
您在第一次循环迭代中除以零(当 i 为 0 时)。
让我从 1 开始。
推荐阅读
- javascript - 隐藏元素 Selenium IDE
- php - Laravel 中的文件上传与验证给出问题并失败并出现白屏且没有错误
- java - 如何使过滤器链线程本地化?
- android - ListView如何正确刷新?
- java - 手动实施 Oauth2 授权码授予流程
- asp.net - 使用 Asp.net core mvc 具有多搜索选项的搜索功能
- ubuntu - WSL 将 Bash 和 Ubuntu 应用程序分开,无法在我当前位于文件资源管理器中的目录中打开“Ubuntu”应用程序
- django - 尝试在模板“with”中分配变量,预计至少有一个变量分配
- c# - 用于控制用户可调整大小的 WPF 装饰器
- docker - 如何以简单的方式在不停机的情况下更换负载均衡器 Docker 容器