我有一个二维数组。我试图在数组中添加每个元素的数字并找到总和。
例如:
考虑我的数组是:a[2][2] = { {15,11}, {13,21} }
。
现在,对于元素15
,我需要添加1+5
并将结果6
放在同一位置。
对于元素11
1+1
,将结果2
置于同一位置。所有其他元素都一样。
以下是我的代码。
int main ()
{
int a[3][2] = { {19,11}, {13,21}, {12,14}};
int i, j;
int digit1,digit2,sum1=0,sum2=0,rem1,rem2;
for ( i = 0; i < 3; i++ )
{
for ( j = 0; j < 2; j++ )
{
digit1 = a[i];
rem1 = digit1%10;
sum1 = sum1 + rem1;
digit1 = digit1/10;
digit2 = a[j];
rem2 = digit2%10;
sum2 = sum2 + rem2;
digit2 = digit2/10;
printf("\nthe sum of i: ", sum1);
printf("\nthe sum of j: ", sum2);
}
}
return 0;
}
但是从上面的代码中我得不到总和。
我对此有点新意并被困在这里。这是EDITOR中的代码。
答案 0 :(得分:2)
定义一个函数来计算整数的数字之和。
int getSumOfDigits(int n)
{
int ret = 0;
while ( n > 0 )
{
ret += (n%10);
n /= 10;
}
return ret;
}
使用for
循环中的函数。
for ( i = 0; i < 3; i++ )
{
for ( j = 0; j < 2; j++ )
{
a[i][j] = getSumOfDigits(a[i][j]);
}
}
答案 1 :(得分:1)
简单。执行以下操作 -
//Assuming the array is a[3][2]
for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
{
int sum = 0;
while(a[i][j])
{
sum+=a[i][j]%10;
a[i][j]/=10;
}
a[i][j]=sum;
}
答案 2 :(得分:0)
在for循环中放置此代码而不是代码,它将起作用
for ( j = 0; j < 2; j++ )
{
sum1=0;
while(a[i][j]){
sum1=sum1+(a[i][j]%10);
a[i][j]=a[i][j]/10;
}
a[i][j]=sum1;
printf("\nthe sum of [%d][%d]: %d", i,j,sum1);
}