【发布时间】:2019-08-16 17:29:23
【问题描述】:
我的代码当前读取两个参数,如果有人输入一个数字,例如 100,我需要添加一个检查以读取 1 个参数,如果输入 100 3,则读取第二个参数。 现在它每次都读取两个参数,如果输入一个参数,就会出错。
#include <iostream>
#include <cstring>
using namespace std;
int perfectnumber(int number)
{
int sumofdivisor = 0;
for (int i = 1; i < number; i++)
{
if (number % i == 0)
sumofdivisor += i;
}
return abs(sumofdivisor - number);
}
int main(int argc, char *argv[])
{
int count = atoi(argv[2]);
int upper_limit = atoi(argv[1]);
for (int start = 2; start <= upper_limit; start++)
{
int difference = perfectnumber(start);
if (difference <= count)
{
cout << start << " ";
}
}
cout << endl;
}
【问题讨论】:
-
只检查 argc: int count = argc > 2 ? atoi(argv[2]) : 0; // 应该这样做
-
具体需要在哪里添加?
-
@B.smith 您似乎很难使用 argc 提供的信息。当只给出一个论点时,让我知道你想要发生什么。你的程序应该做什么?警告并退出?猜测第二个参数,基于默认值?我可以扩展我的答案。
标签: c++ if-statement perfect-numbers