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

Adding a series of input number in c++

本文关键字:输入 数字 一系列 添加 c++      更新时间:2023-10-16

嗨,有人能帮我在C++中创建一个输入数字和的代码吗。例如

输入: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);
}

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

正如您在链接表中看到的,数字没有值12等。相反,它们有值4950等。字符'5''3'分别有ASCII值5351,添加例如"535"会得到结果157

但正如你在ASCII表中看到的,所有数字都是连续的,这意味着我们可以使用一个非常简单的技巧从其ASCII值中获得数字值,只需减去'0'的ASCII值。例如,'5' - '0'将为您提供值5

未经测试:

#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;
} 

为了可读性,不将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;
}