如何计算数组内部元素的位数(不是数组的长度),并计算其位数之和

时间:2018-10-29 17:32:51

标签: c++

假设数组为a [] = {123,34533,21123}。我如何计算索引1处的元素长度?我知道我做错了所有但我不知道该怎么做

#include<iostream>
using namespace std;
int main()
{
    int a[]={123,231,23},j=0,num,last_digit,sum;
    int size_of_array=sizeof(a)/4;
    int pos;
    cin>>pos;
    num=a[pos];

    for(int i=0;i<size_of_array;i++)
    {
       last_digit=num%10;
       sum=sum+last_digit;
       num=num/10;
    }
    cout<<sum;
}

3 个答案:

答案 0 :(得分:0)

“我要计算我需要其长度的元素的位数之和”

令人困惑。如果要将元素转换为字符串然后采用其长度,则可以执行以下操作:

    std::cout << "Length: " << std::to_string(a[i]).size() << std::endl;

其中i是数组a []的索引。

但是,如果您想计算数字的总和,那么我想您正在尝试这样做:

    int sumCell = 0;
    int cellValue = a[i];
    while(cellValue > 0) {
        sumCell = cellValue % 10;
        cellValue /= 10;
    }

Sum在变量sumCell中。

您是在寻找这两种解决方案中的一种还是另一种?

答案 1 :(得分:0)

#include<iostream>
using namespace std;
int main()
{
    int a[] = { 123, 231, 23 }, j = 0, num, last_digit, sum = 0, count = 0;
    size_t size_of_array = sizeof(a) / 4;
    size_t index;
    cin >> index;
    num = a[index];

    while (num != 0) {
        last_digit = num % 10;
        sum = sum + last_digit;
        num = num / 10;
        count = count + 1;
    }
    cout << sum << endl;        //sum
    cout << count;              //number of digits
}

答案 2 :(得分:0)

就像普通的int

#include<iostream>

int main() {

    int a[]={123,231,23};
    size_t pos; // use size_t for index and size
    std::cin >> pos;
    int elm = a[pos];
    int cnt = 1;
    while ( elm /= 10) {
        ++cnt;
    }

    std::cout << cnt << std::endl;

    return 0;
}

输入索引并获取长度。