此练习要求将输入作为数字的字符数组,然后将数字的数字相加。
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main() {
//Input a series of single digit numbers
char numbers[] = "a";
cout << "Input a series of single digit numbers." << endl;
cin >> numbers;
//convert the character array into a int array.
int sum = 0;
for (int i = 0; i < size; i++) {
sum += atoi(numbers[i]);
}
cout << "Sum of digits: " << sum;
return 0;
}
根据我的理解,atoi函数一次只转换整个字符数组(C字符串),我想我不能单步执行数组,但看起来这应该可行。我的另一个选择是将Cstring转换为一个大整数,然后使用字符串的长度来逐步计算每个位置的数字,但这可能是我可能做得更低效的。
你会用什么来查找单个数字作为字符数组的整数?
答案 0 :(得分:3)
char numbers[] = "a";
这将创建一个包含2个char
项的数组。这对于任何合理的事情都是不够的。请改用std::string
。
cin >> numbers;
最好使用std::getline
标题中的<string>
。
sum += atoi(numbers[i]);
atoi
将字符串作为参数,而不是单个char
。您需要数字的总和,而不是通过将atoi
应用于规范的所有右子串而获得的数字值的总和。
对于数字字符ch
,相应的数字值为ch - '0'
。