如何获取int数组中int的第一个数字?

时间:2015-06-09 05:54:41

标签: c++ arrays

我有一个名为doubledNumbers的int数组,如果此数组中的数字大于9,我想将数字加在一起。 (例如,16将变为1 + 6 = 7,12将变为3,14将变为5等)

假设我在doubledNumbers中有以下数字:

12 14 16 17

我想将doubledNumbers更改为:

3 5 7 8

当我收到错误

时,我不确定如何为int数组执行此操作
  

无效类型' int [int]'对于数组下标

这是我的代码(抛出for循环):

  if (doubledNumbers[i]>9) {
       doubledNumbers[i]=doubledNumbers[i][0]+doubledNumbers[i][1];

4 个答案:

答案 0 :(得分:2)

int中没有十进制数字。有(大多数是32或64)二进制位(位),2的基数与10的基数不相称。您需要将数字除以10得到十进制数字。< / p>

unsigned int DigitSum(unsigned int input, unsigned int base = 10)
{
    unsigned int sum = 0;
    while(input >= base)
    {
        sum += input % base;
        input /= base;
    }
    sum += input;
    return sum;
}

我使用了unsigned int。该示例不能直接用于负数,但修改并不困难。

答案 1 :(得分:1)

你可以使用这样的东西

#include <iostream>
using namespace std;
int sumofdigits(int);
int main() 
{
    // your code goes here
    int a[5] ={12,14,15,16,17};
    for(int i=0;i<5;i++)
    {
        int m=sumofdigits(a[i]);
        cout <<m<<" ";
    }
        return 0;
}
int sumofdigits(int n)
{

        int sum=0;
        while(n!=0)
       {
            int d=n%10;
            sum=sum+d;
            n=n/10;
        }
        return sum;
}

//%运算符用于计算余数。

答案 2 :(得分:0)

You can do like this,

#include<iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
  int a[5]={1,2,5,11,12};
  int length = sizeof(a)/sizeof(int);
  for(int i=0;i<length;i++)
  {
        if ( a[i] >9 )
        {
                stringstream ss;
                ss << a[i];
                string a1 = ss.str();
                const  char * s = a1.c_str();
                int sum=0;
                while (*s !='\0')
                {
                        cout<<*s<<endl;
                        sum  += (*s - '0');
                        s++;
                }
                cout<<"num:"<< sum <<"\n";
        }
  }
}

答案 3 :(得分:-1)

int A[2];
A[0] = 2;
A[1] = 10;
for (int i=0;i<2;i++) {
    if (a[i] > 9) {
        int b = a[i]%10;
        int c = a[i]/10; 
        int d = b+c;
        cout << d;
    }
}

它仅适用于两位数字(10 -99),而且只有两位数字(99之后),我们必须改变逻辑。