永发信息网

C语言 两个任意长度一维数组的加法

答案:2  悬赏:80  手机版
解决时间 2021-03-22 11:07
  • 提问者网友:献世佛
  • 2021-03-21 18:03
两个数组长度相同才能相加吗?长度不一样时长度较小的要补零的吗?现在用matlab做数字信号处理实验实现任意长度有限序列加法,老师问C如何实现? C语言忘的连格式都不记得了,,求大神指导?
最佳答案
  • 五星知识达人网友:青尢
  • 2021-03-21 18:17
#include
#include
char s[100001];
int a[100001],b[100001],c[100001];

int main(){
long i,j,k,m,n;
long alen,blen,clen;
gets(s);
alen=strlen(s);
for(i=alen-1;i>=0;i--)
a[alen-i]=s[i]-'0';
gets(s);
blen=strlen(s);
for(i=blen-1;i>=0;i--)
b[blen-i]=s[i]-'0';
if(alen>blen)
clen=alen;
else
clen=blen;
for(i=1;i<=clen;i++)
c[i]=a[i]+b[i];
for(i=1;i<=clen;i++)
if(c[i]>9){
c[i+1]++;
c[i]-=10;
if(i==clen)
clen++;
}
for(i=clen;i>=1;i--)
printf("%d",c[i]);

printf("\n");
return 0;
}
全部回答
  • 1楼网友:几近狂妄
  • 2021-03-21 18:43
首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。 其次,所谓的任意长度,其实就是可变长数组。 那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。 重点在于,要开辟多大的数组来存 一般有这么几种情况 1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。 2 动态分配, 使用malloc动态分配内存。 当出现可能的不够情况,用realloc重新分配。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯