以下是我average.cpp
中的代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[]) {
int total = 0;
for(int i=1; i<argc; i++) {
char cnum = *argv[i];
string snum = "";
snum += cnum;
total += stoi(snum);
}
cout << "The average is " << total/(argc-1) << endl;
return 0;
}
当我运行./average 3 5 33
时,答案应向下舍入到13
,但我得到3
。当我运行./average 3 5 44
时,答案应该向下舍入到17
,但我得到4
。我知道只有参数的第二个数字被忽略,但我不确定如何包含第二个数字。
答案 0 :(得分:1)
以下是否有帮助?
int total = 0;
for(--argc; argc > 0 ; --argc) total += atoi(argv[argc]);
答案 1 :(得分:1)
char cnum = *argv[i];
这是参数的第一个字符。你不想只是第一个字符,你想要整个参数。所以写一下:
const std::string snum = argv[i];
total += std::stoi(snum);
(你可以把它写成:
total += std::stoi(argv[i]);
这取决于从const char*
到std::string
的隐式转换 - 但在调试命名中间值时通常很有帮助。)