繁体   English   中英

C++ 将字符串数组转换为整数,然后对 int 数组求和

[英]C++ convert string array to integers, then sum int array

我需要将用户输入整数传递给 sumTotal(& userInt) 函数。
如果 int 是 2341,我需要求和 2+3+4+1 = 10 并将值返回给 main!

#include <iostream>                          
#include <string>                           
#include <vector>

using namespace std;                        

// The program needs to input an integer like 2341, then sum it as 2+3+4+1 + 10
// I am in putting an integer and will pass it to a funtion by &.
int main()
{
    string strNumber;
    int intNumber = 0;

    cout << "Enter your number: ";
    cin >> intNumber;

    // programming the logic for sumTotal(& intNumber) function before creating 

    strNumber = to_string(intNumber);
    cout << "Your number is: " << strNumber << endl;
    cout << "Your numbers length: " << strNumber.length() << " digits" << endl;

    // here I need to convert the string array to an integer array
    for (int i = 0; i < strNumber.length(); ++i){
        intNumber[&i] = strNumber[i] - '0';
        cout << "Element [" << i << "] contains: " << strNumber[i] << endl;
    }

    // next a recursive function must sum the integer array
    // I am taking an online course and cant afford a tutor please help!


    system("pause");                                            
    return 0;

}

字符串是一个由char的数组。 要将char转换为int您必须执行'char' - '0'

我写了几个版本。 选择你最喜欢的那个。

#include <iostream>
#include <string>

int main()
{
    std::string str = "1234";
    int sum = 0;

    //pre C++11
    for (std::string::iterator i = str.begin(); i != str.end(); ++i)
        sum += (*i - '0');

    //C++11
    sum = 0;
    for (auto i = str.begin(); i != str.end(); ++i)
        sum += (*i - '0');

    //ranged-for
    sum = 0;
    for (const auto &i : str)
        sum += (i - '0');

    std::cout << "Sum: " << sum;

    std::cin.get();
}

一种简单有效的方法是将数字保留为字符串并一次访问一个数字。

注意等式:

digit_number = digit_character - '0';

另外,知道对数字求和时,顺序无关紧要。 所以,我们有:

sum = 0;
for (i = 0; i < string.length(); ++i)
{
  sum += string[i] - '0';
}

如果你想要递归,你不需要任何字符串工作,试试这个:

#include <iostream>
using namespace std;

int recSum(int);
int main(){
    int i;
    cin>>i;
    cout<<recSum(i);
    return 0;
}

int recSum(int i){
    return i==0?0:i%10+recSum(i/10);

}

数组版本的递归

#include <iostream>
using namespace std;

int recSum(int* ary,int len){
    return len<0?0:ary[len]+recSum(ary,len-1);
}
int main(){
    int j[]={1,2,3,4,5,6,7,8,9,10};
    cout<<recSum(j,9);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM