本文目录一览:
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打印出来就行了。做的时候为了方便可能会把个位存在数组第一位,那样的话就倒序输出字符串就行了。
代码自己写。