2014-09-24 58 views
0

我想隨機生成兩個30位數組並將其添加。結果必須放入一個單獨的新數組中。如果兩個數字的和大於10,我就會遇到麻煩。誰能幫助我?添加兩個數組數組在一起,並將其放入一個新的數組(C)

#include <stdio.h> 
#include <time.h> 
#include <stdlib.h> 


int main() 
{ 
int numlist[30],numlist2[30],addnum[60],i,j,k; 
srand(time(NULL)); 


for (i=0;i<30;i++) 
{ 
    numlist[i] = rand()%10; 

} 

for (j=0;j<30;j++) 
{ 
    numlist2[j]=rand()%10; 
} 

for (k=0;k<30;k++) 
{ 

    if ((numlist[k]+numlist2[k])<10) 
     addnum[k] = numlist[k]+numlist2[k]; 
    else 
     /*dont know what to do*/ 



} 
return 0; 
} 
+1

你需要實現進位寄存器。 – 2014-09-24 21:12:48

+0

提示:結果數組索引不應該依賴於數組上的循環變量(如果您希望將結果順序保存在'addnum'中)。 – Mahesh 2014-09-24 21:14:32

+0

首先想想如果'sum'不大於10,你應該怎麼做。 你顯然必須在那裏放置某種標記,以便稍後可以識別它是否在ELSE塊的情況下運行。 – 2014-09-24 21:15:37

回答

1

使用進位寄存器:

int carry = 0; 
for (k=0;k<30;k++) 
{ 
    int adder = numlist[k]+numlist2[k]+carry; 
    carry = adder/10; 
    addnum[k] = adder % 10; 
} 
addnum[k] = carry; 
+0

輕微:完整的添加需要繼續'for(k ++; k <60; k ++){addnum [k] = 0; }' – chux 2014-09-24 22:55:25

+0

啊,是的。或者是零初始化數組。 – 2014-09-25 03:13:59

+0

(技術上,添加2個30位數字將導致最多31位數字) – 2014-10-19 06:43:03