这是一个简单的程序,它汇总了命令行中发送的所有数字。它应该采用任意数量的值。 它每行给我一个0。我已经厌倦了做一些改变,但它继续提供相同的输出
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
for (int i = 0; i < argc; i++)
{
int sum=0;
sum+=atoi("argc[i]");
cout << sum << endl;
}
return 0;
}
答案 0 :(得分:3)
"argc[i]"
是一个文字字符串,所以当atoi
转换为0时! sum
应该在循环之前初始化:
int main(int argc, char *argv[]) {
int sum=0;
for (int i = 1; i < argc; i++) {
sum += atoi(argv[i]);
}
cout << sum << endl;
return 0;
}
传统上argv[0]
是程序的名称(或者至少是命令行中用于调用程序的名称),因此最好从索引1开始。
您需要花费十几个小时阅读更多图书并在计算机上进行试验。在这里问这样一个基本问题根本没有帮助你(并且被认为是粗鲁......)。
不要忘记在编译时启用调试信息和所有警告(例如,如果使用GCC,请使用g++ -Wall -g
)。然后,了解如何使用调试器(例如gdb
)。
答案 1 :(得分:-1)
您的基础知识不明确,我建议您阅读本书。 程序应该是这样的:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{
sum+=atoi(argv[i]);
}
cout << sum << endl;
return 0;
}
答案 2 :(得分:-4)
将参数和移动到循环外!!
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
int sum=0;
for (int i = 0; i < argc; i++)
{
sum+=atoi(argv[i]);
cout << sum << endl;
}
return 0;
}