您的位置:

c语言char数组相加,C语言char数组赋值

本文目录一览:

c语言 利用数组实现加法

我测试过了,含有100这样带有0的数字的时候没有问题,从代码分析带0也不会有问题。

至于你说的两个加数位数不相同出错。问题出在下面几行:

for(i=0;(k[i]!='\0'||b[i]!='\0');i++)

{

if(sign==1)

{

j[i]=k[i]+b[i]-95;

sign=0;

}

else

j[i]=k[i]+b[i]-96;

上面的代码片段。for循环的第二个表达式成立是或关系。如果其中一个加数位数不够,后面的“-95”和“-96”将多减去一个48,所以由char型转到int型的时候就出错了。

建议你使用strlen求一下两个被加数长度。将位数小的高位用0补齐就行了。

C语言数组相加

1,gets需要判断是否读取正确

2,思路:xyz+zyx 即求数字倒序然后相加

int main()

{

char buf[64];

int a = 0, sum = 0;

if(gets(buf) == NULL)

printf("gets error, %s\n);

a = strlen(buf);

for(int i = 0;a1; --a, ++i)

{

sum = buf[i] + buf[a];

}

printf(sum, %s\n);

return 0;

}

没编译你试一下,主要是方法要正确,你的有点乱,得加点注释要不看起来麻烦

还有 你的:a[strlen(str)]='\0';是不是不对,a[strlen(str)-1]='\0'; ?

c语言大数的加法用数组char指针实现

做大数加法,首先要能保存大整数。C能提供的最大的整数类型也就是long long int了吧,还是有上限。用整数类型这条路不通。所以想到把大整数看作字符串(即char数组),一位数字就是数组的一个元素。数组能有多长?几万位不止,应付大数加法很轻松。

基本做法就是把两个加数各自存为字符串。(怎么把数字转换成字符?每个数字加'0'就行了。比如 '7'就是7+'0'。)然后从个位起逐位加。(加的时候把字符变回数字,'7'-'0'就是7。)算出来的结果再转成字符存到第三个数组的相应位里,遇到进位就把上一位加个1,简单的很。最后第三个字符串就是结果,用puts打印出来就行了。做的时候为了方便可能会把个位存在数组第一位,那样的话就倒序输出字符串就行了。

代码自己写。