2014-09-24 25 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