簡體   English   中英

C 中的 int 數組和它們的總和

[英]Array to int and Sum of them in C

我正在學習 C,我對數組處理有點困惑。

我有一個任務要求我總結 2 個非負整數的 arrays。

示例數組 1 = {1,2,3},數組 2 = {4,5,6} -> 123+456 = 579

我搜索了一些關於如何將整數的 arrays 轉換為 integer 的解決方案,但並沒有真正得到有用的信息。

我最終得到了一個代碼:

#include <stdio.h>


int sum(int A[],int B[], int n){
    int i,j,t,k;
    
    for(i=0;i<n;i++){
        t= t+A[i];
    }
    
    for(j=0;j<n;j++){
        k= k+B[j];
    }
    
    return t+k;
    
}


int main()
{
    int n = 3;
    int a[n] = {1,2,3};
    int b[n] = {4,5,6};
    
    printf("%d",sum(a,b,n));

    
    return 0;
} 

但我的結果是 1225283 這當然是錯誤的。 我找到了一個解決方案,人們寫了“t = 10 * t + A [i]”之類的東西,我不知道“10 *”的來源,但我測試了它,然后“t”得到“123”但如果我嘗試相同的“k”它不起作用,返回“k”不會給我“456”。 我有點困惑,處理這個問題的正確方法是什么? 謝謝你的幫助。

您基本上是在添加數字 1+2+3 而不是創建數字 123。您的代碼還存在各種其他缺陷,例如未初始化的變量。 這是一個工作示例:

int array2int(int A[], int n) {
    int ret = 0;

    for(int i=0, k=1; i<n; i++){
        ret = ret + k * A[i];
        k *= 10;
    }

    return ret;
}    

int sum(int A[],int B[], int n){
    return array2int(A, n) + array2int(B, n);    
}

首先,在總和 function 中,您還沒有初始化 t 和 k,但您不斷將它們求和並稍后使用,因此每次執行代碼時,您都會得到不同的結果。

另一方面,在類似 "t= 10 t+A[i]"的情況下, 10 來自基本數學,其中一個數字可以解析為 a 10^0 + b 10^1 +c*10^2 +。 ... + m * 10^n。 因此,從最低有效數字開始,每次嘗試添加新數字(從最低有效數字到最高有效數字)時,您的乘數都需要大 10 倍。

int sum(int A[],int B[], int n){
    int i,j,t=0,k=0,ten=1;
    
    for(i=n-1;i>=0;i--){
        t += ten*A[i];
        ten *= 10;
    }

    ten = 1; /* initialize again*/
    
    for(j=n-1;j>=0;j--){
        k += ten*B[j];
        ten *= 10;
    }
    
    return t+k;
    
}

像這樣的東西應該工作。

暫無
暫無

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

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