如何在数组中存储一个大数字,然后将这些数字相加

How to store a big number in parts in an array and then add up the digits?

本文关键字:数字 然后 一个 数组 存储      更新时间:2023-10-16

假设用户在下面输入一个数字:

54353325421435

我希望下面的变量存储上面数字的一部分

int part[3]
part[0]=54353
part[1]=32
part[2]=5421435

,然后将数字相加并存储在变量中,如下所示:

int sum[3]
sum[0]=5+4+3+5+3      //sum up part[0]
sum[1]=3+2            //sum up part[1]
sum[2]=5+4+2+1+4+3+5  //sum up part[2]

对不起人!我不知道该怎么解释才好!我希望你能理解我的问题。感谢阅读

问题

你想把整数分成3个不同的部分。基本上,你有一个数字54353325421435,你想把它分成:

part[0]=54353
part[1]=32
part[2]=5421435

然后加起来。

解决方案

for环是最好的。如果你不知道for循环是什么,基本上它是一种具有定义的起点和终点的迭代方法。例如,下面是一个简单的迭代,打印出"hello world"2倍:

for(int i=0; i<2; i++)
   cout << "Hello World" << endl;

您可以在这里了解更多关于for循环的信息。在你的例子中,你要做的是遍历这个。基本上,首先你把变量存储在一个整数中。(我相信你能做到。)

 const unsigned long long NUM = 54353325421435; //Make it a constant to not change it

然后是前面提到的零件数组:

int part[3]

你现在可以做的是,循环通过NUM。那么让我来演示一下如何做第一个:

int access_digits(const unsigned long long int n, int index)
{
    int digit_array[64] = {0};
    unsigned long long digits = 0, digit, number = n;
    while (number) {
        digit = number % 10;
        number /= 10;
        digit_array[digits] = digit;
        digits++;
    }
    return digit_array[digits - index - 1];
}
 std::string digits;
 for(int i=0; i<=4; i++)
 {
    digits.append(std::to_string(access_digits(NUM,i)));
 }
 int digit_int = std::stoi( digits );

您可以在上面看到,首先有一个access_digits函数。您可以使用该函数按索引访问数字。(功劳归于Slayther。)无论如何,在那之后,你可以看到我从0到4循环得到part[0]的前5位数字。前5位是54353

最后你想把它们加起来。这很简单。只需循环这些数字,并使用累加器将它们相加,如下所示:

  int accum=0;
  for(int i=0; i<4; i++)
  {
    accum += access_digits(digit_int,i);
  }
 

锻炼

现在编辑它,包括part[1]part[2]下面的练习部分。

引用

遍历C

中的整数

青少年领地聊天

for循环

std:: string>

符串:添加

词汇表为循环

:

执行一次init-statement,然后重复执行statementiteration_expression,直到condition的值变为false。测试在每次迭代之前进行。

语法

正式语法:

attr(optional) for ( init-statement condition(optional) ; iteration_expression(optional) ) statement
非正规语法:

  attr(optional) for ( declaration-or-expression(optional) ; declaration-or-expression(optional) ; expression(optional) ) statement

如果您想要的数字的和。如你上文所述,

int number,digit,sum=0;
while(number!=0)
{
 digit=number%10;
 sum=s+digit;
 number=number/10;
}

此代码段将计算编号的数字之和。

if number=123;
it will calculate sum=3+2+1=6;
相关文章: