任何人都可以帮我创建C ++中输入数字总和的代码。 e.g。
输入:535 输出:13
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int i = 0,sum = 0;
int numarray[50];
void calc(int c,string num) {
do {
numarray[i] = num.at(i);
/*sum = sum + numarray[i];*/
sum = sum + num.at(i);
cout << numarray[i] << endl;
i++;
} while(i != c);
cout << sum << endl;
}
int main() {
string num;
int i,charlen;
int numar[50];
int sum=0;
cout << "Input numbers: ";
cin >> num;
charlen = num.length();
calc(charlen,num);
}
答案 0 :(得分:1)
虽然字符是数字,但它们的值通常与它们所代表的字符不同。最常见的编码方案是ASCII encoding。
正如您在链接表中看到的那样,数字不具有值1
或2
等。相反,它们的值为49
和{{1}字符50
和'5'
分别具有ASCII值'3'
和53
,例如添加51
将为您提供结果"535"
。
但是正如您在ASCII表中看到的那样,所有数字都是连续的,这意味着我们可以使用一个非常简单的技巧从其ASCII值中获取数字值,只需减去157
的ASCII值。例如,'0'
会为您提供值'5' - '0'
。
答案 1 :(得分:0)
没有测试:
#include <iostream>
int main()
{
unsigned long long x;
std::cout << "Enter a non-negative number: ";
std::cin >> x;
unsigned long long sum = 0;
do { sum += x % 10; } while ( x /= 10 );
std::cout << "\nThe sum of digits of the number is " << sum << std::endl;
}
答案 2 :(得分:0)
为了便于阅读,将charlength传入函数可能会有所帮助,只需在方法内部执行即可。除此之外,在这种情况下,for循环似乎也是更好的选择。
void calc(string num) {
int sum = 0, int i = 0;
//for loop run from num.length - 1 to 0 {
/*numarray[i] = stoi(num.at(i));*/
/*sum = sum + numarray[i];*/
sum = sum + stoi(num.at(i));
cout << numarray[i] << endl;
i++;
}
cout << sum << endl;
}