我有一个名为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];
答案 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之后),我们必须改变逻辑。