c++ - 为什么即使看起来很合适,它也会显示错误?
问题描述
#include <iostream>
using namespace std;
int factors(int);
int main() {
int n;
cout<<"Enter a number: ";
cin>>n;
factors(n);
return 0;
}
factors(int n){
//To find out factors
int i, arrA[5];
arrA[0]=1;
cout<<"Factors: ";
for(int i=1;i<=n;i++){
for(int j=2;j<=n;j++){
if(n%j==0){
arrA[i]=j;
}
else if(n%j!=0){
i--;
}
}
}
for(int z=0;z < (sizeof(arrA)/sizeof(arrA[0]));z++){
cout<<arrA[z]<<" ";
}
}
这是一个 c++ 代码,用于查找给定数字的因数。但问题是它没有产生所需的输出。问题在于处理部分(我认为)。它仅显示“因素:”并继续处理并给出错误说明 - “Untitled.exe 已停止工作”。请修复错误并提供详细说明。
解决方案
很明显,问题来自for(int i=1;i<=n;i++){
包含i--
无限循环的风险。
由于您标记了 c++,因此使用 c++ 来避免静态数组(如果您确定只有 5 个因素,arrA[5] 是一件好事,但这取决于您的 n)
而是使用 std::list
#include <iostream>
#include <list>
using namespace std;
void factors(int n, std::list<int> & factors);
int main() {
int n;
cout<<"Enter a number: ";
cin>>n;
std::list<int> fact;
factors(n, fact);
cout<<"Factors: ";
std::list<int>::iterator it=fact.begin();
for(;it!=fact.end();it++)
{
std::cout << *it<<", ";
}
return 0;
}
void factors(int n, std::list<int> & factors)
{
for(int j=2;j<=n;j++){
if(n%j==0){
factors.push_back(j);
}
}
}
推荐阅读
- c# - 在 SaveChangesAsync 之后返回实体是否危险?
- php - 在 PHP 7.2 版上读取加载会话数据失败
- c# - 如何修复“显示的主体(列表
)' 不能是迭代器块,因为 'string' 不是迭代器接口类型”? - android - 谁能建议如何在android Recycler View中实现按产品价格排序
- amazon-web-services - 允许 lambda 承担从身份池创建的 IAM 角色的角色?
- docker - 在 quay.io 中构建参数
- javascript - 如果用户选择日期,则 AJAX 发生错误
- python - 无法使用 folium add_child 创建点
- dart - 无法在颤振中运行我的第一个应用程序
- html - 如何从我的网页中删除 Bootstrap 缩略图