printf("%d", an1[i]);
elseprintf("0");
return 0;
}
关于c语言大数相加d串末尾缺了个字符串结尾符'\0'需要补上 。
d[l+1] ='\0';
至于d输出时开头的零,这是面对多位数可能进位也可能不进位之类问题造成的多位数的位数不定的困惑,无奈之举 。有个办法就是扫描处理进位问题的动作是可以提前先在倒装着的c串上完成了的,这样d串的长度就确定再将c串倒装搬到c串 。
PS:LZ使用scanf返回值的方法有问题 , scanf返回值是指成功获得输入的参数个数,应该直接用
while(scanf("%s%s",a,b)==2)
比较妥当 。
C语言大数加法运算LZ错误不少啊
#include stdio.h
#include string.h
int main()
{
char a[1000],b[1000],e[2001];
int i,p,q,k;
int c[1000]={0},d[1000]={0},sum[1001]={0};
int len_a,len_b;
scanf("%s",e);
p=strlen(e);
for(i=0;ip ;i++)
{
if(e[i]==',')
{
break;
}
a[i]=e[i];
}
len_a=i-1;
i++;
for(k=0;ip;i++,k++)
b[k]=e[i];
len_b=k-1;
for(i=0;i=len_a;i++)
c[i]=a[len_a-i]-'0';
for(i=0;i=len_b;i++)
d[i]=b[len_b-i]-'0';
for(i=0;i=len_a||i=len_b;i++)
{
sum[i]+=c[i]+d[i];
if(sum[i]=10)
{
++sum[i+1];
sum[i]-=10;
}
}
if(sum[i--]0)printf("1");
for(;i=0;i--)
printf("%d",sum[i]);
return 0;
}
c语言代码,大数求和这个就是不对齐的结果
12341234
123123
------------------
13582464
给你提个思路 , 就是反序后,那么个位和个位就对上了,计算完成后,在反序回来,呵呵
反序用strrev函数
中心思路 , 个位先加
c[0]=a[0]+b[0];
用for处理中间各位,注意要加上上一位的进位,并上一位取一位
for(i=1;ik;i++)
{
c[i]=a[i]+b[i]+c[i-1]/10;
c[i-1]%=10;
}
最后要处理最高位
如果大于9,那么再加一位
if(c[k-1]9)
{
c[k-1]%=10;
c[k]=1;
k++;
}
最后int变char,注意要加上\0结束符
反序回来就是结果
关于c语言函数大数相加和c语言函数大数相加怎么表示的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
- mysqli获取所有数据 mysql的提取函数
- mongodb能存多大数据量 mongodb占多大硬盘
- mysql 分组函数 mysql分组取数据
- mysql分区表优劣分析 分区优化大数据mysql
- mysql统计函数
- redis大数据量的查找效率 redis大数据量的使用
- 将数据保存到文件中c语言 将数据保存到mongodb
- mysql有rank函数吗 mysql有rank
- redis-cli命令不能用 redis函数调用失败
- 罗布人村天气 mysql语言具有的功能
