在c ++中添加一系列输入数字

时间:2014-04-29 13:57:56

标签: c++

任何人都可以帮我创建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);
}

3 个答案:

答案 0 :(得分:1)

虽然字符是数字,但它们的值通常与它们所代表的字符不同。最常见的编码方案是ASCII encoding

正如您在链接表中看到的那样,数字不具有值12等。相反,它们的值为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;
}