Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在多维数组中添加每个元素的数字_C_Arrays_Multidimensional Array - Fatal编程技术网

C 在多维数组中添加每个元素的数字

C 在多维数组中添加每个元素的数字,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我有一个二维数组。我试图将数组中每个元素的数字相加,然后求和 例如: 假设我的数组是:a[2][2]={{15,11},{13,21} 现在对于元素15我需要添加1+5,结果6放在相同的位置。 对于元素111+1,将结果2放在相同的位置。所有其他元素也是如此 下面是我的代码 int main () { int a[3][2] = { {19,11}, {13,21}, {12,14}}; int i, j; int digit1,digit2,sum1=0,sum2=0,re

我有一个二维数组。我试图将数组中每个元素的数字相加,然后求和

例如:

假设我的数组是:
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;
}
int main()
{
int a[3][2]={{19,11}、{13,21}、{12,14};
int i,j;
int digit1,digit2,sum1=0,sum2=0,rem1,rem2;
对于(i=0;i<3;i++)
{
对于(j=0;j<2;j++)
{
数字1=a[i];
rem1=数字1%10;
sum1=sum1+rem1;
数字1=数字1/10;
第2位=a[j];
rem2=数字2%10;
sum2=sum2+rem2;
数字2=数字2/10;
printf(“\n i之和:”,sum1);
printf(“\n j之和:”,sum2);
}
}
返回0;
}
但是从上面的代码中我没有得到总数


我是个新手,被困在这里了。这是密码

在for-loop中放入此代码而不是您的代码,它将正常工作

 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);
}
(j=0;j<2;j++)的

{
sum1=0;
而(a[i][j]){
sum1=sum1+(a[i][j]%10);
a[i][j]=a[i][j]/10;
}
a[i][j]=sum1;
printf(“\n[%d][%d]:%d”之和,i,j,sum1);
}

很简单。进行以下工作—

//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;
}
//假设数组是[3][2]

对于(int i=0;i定义一个函数来计算整数的位数之和

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]);
   }
}
(i=0;i<3;i++)的

{
对于(j=0;j<2;j++)
{
a[i][j]=getSumOfDigits(a[i][j]);
}
}

这里有一篇关于核心功能的SO帖子:@RSahu我想我在代码中也遵循了同样的逻辑。但是当涉及到数组时,我不知道如何实现它。@请检查我的答案好吗?我想这是你想要的。请检查。如果你有一些问题,请随时提问。为了澄清,如果条目是98765那么预期的总和是
35
,而不是
8
?(你的例子都是一位数的总和)@MattMcNabb我只需要一个加法。如果有多个数字,就不需要再加一次。数组是[3][2],但你的循环是2*2。它不起作用。请更改循环:)@Naseef,谢谢你的解释。OP在描述中有一个2x2数组,在代码中有一个3x2数组。是的。我在写答案的时候也做了同样的事情。幸运的是,在发布之前,我再次查看了帖子。此外,我认为这是一项简单的任务,而且我认为用户是初学者,因此用户可能会因为看到一个额外的函数来计算数字之和而感到困惑。它可以在3-4行中完成,而无需使用额外的功能。虽然使用函数可以使代码模块化,这是一个很好的实践:)如果数字是115,输出是什么。我认为当数字超过2位数时,您的代码将无法工作。请检查您的代码是否有[3][2]={{{159121}、{1533521}、{1552152534};他没有指定任何数字。因此,它应该是广义的。不幸的是,您的代码不是通用的。虽然不知怎么的它被接受了。@Sathish我想这是显而易见的我试过了。但是当打印总数时,它似乎是空的。你能在这里给出你的代码吗?只需将其与数组一起发布:)@smashtit您仍然面临问题吗?你可以给我看看你的代码。我认为这应该行得通。
intmain(){inta[3][2]={19,11},{13,21},{12,14};inti,j;for(I=0;I<3;I++){for(j=0;j<2;j++{intsum=0;而(a[I][j]){sum+=a[I][j]%10;a[I][j]/=10;}printf;a[i][j]=sum;}}返回0;}
等等,我正在检查它。