簡體   English   中英

整數數組中每個元素的位數之和

[英]Sum of digits of each elements inside an array of integers

我想計算數組中每個元素的數字總和。 問題在於這段代碼只計算數組中奇數索引 (1,3,5...) 的總和。 在控制台中,它顯示了偶數索引的一些隨機數(0,2,4 ...)

誰能告訴我有什么問題?

是的,我需要將它用作數組

以下是 output 值:

Enter how many numbers you want to calculate sum of digits: 5
Enter those numbers: 12
Enter those numbers: 33
Enter those numbers: 44
Enter those numbers: 22
Enter those numbers: 33
Sum of 0 number is: 4
Sum of 1 number is: 6
Sum of 2 number is: 40
Sum of 3 number is: 4
Sum of 4 number is: 11730950
#include <iostream>


int main(int argc, char** argv) 
{
    int n;
    int temp;
    int pom;

    cout << "Enter how many numbers you want to calculate sum of digits: ";
    cin >> n;

    int numbers[n];
    int sum[n];

    for (int i = 0; i < n; i++)
    {
        cout << "Enter those numbers: ";
        cin >> numbers[i];
    }

    for (int i = 0; i < n; i++)
    {
        while (numbers[i] > 0)
        {
        temp = numbers[i] % 10;
        sum[i]+= temp;
        numbers[i] = numbers[i]/10; 
        }

    }



    for (int i = 0; i < n; i++)
    {
        cout << "Sum of " << i << " number is: " << sum[i] << endl;
    }

    return 0;
}

您需要初始化sum數組,如下所示:

int sum[n] {};

否則,您第一次從 sum 的元素中sum時,您的行為未定義。

此外,可變長度 arrays 不是標准 c++ 的一部分。 如果您在編譯時不知道數組的大小,只需使用std::vector

如果您絕對必須使用數組,那么您將需要動態分配它,如下所示:

int * arr = new int[n]{};
#include <iostream>
using namespace std;
int main() {
    int a,temp,sum=0;
    cin>>a;
    int arr[a];
    for(int i=0;i<a;i++)
    {
        cin>>arr[i];
    }
    for(int i=0;i<a;i++)
    {
        sum=0;
        while(arr[i]>0)
        {
            temp=arr[i]%10;
            sum+=temp;
            arr[i]=arr[i]/10;
        }
        cout<<sum<<" ";
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM