Ⅰ c语言实现大整数加法
//把各位的数码存入字符数组中,注意ASCAII码的转换
#include<stdio.h>
#include<string.h>
#include<conio.h>
intmain()
{
ints,t,i,len1,len2;
chars1[30],s2[30],n1[30],n2[30],sum[31];
//将字符串以数码形式按倒序存储于新字符串中,便于计算
printf("input2num(小于10^40): ");
scanf("%s%s",&s1,&s2);
len1=strlen(s1);
len2=strlen(s2);
t=0;
for(i=len1;i>=0;i--)n1[t++]=s1[i-1]-48;
t=0;
for(i=len2;i>=0;i--)n2[t++]=s2[i-1]-48;
//高位补0
if(len1>len2)
{
n1[len1]=0;
for(i=len2;i<len1;i++)n2[i]=0;
}
if(len1<len2)
{
n2[len2]=0;
for(i=len1;i<len2;i++)n1[i]=0;
}
//计算
t=0;
s=0;
for(i=0;i<(len1>len2?len1:len2);i++)
{
s=n1[i]+n2[i]+t;//s为数码之和
sum[i]=s%10;//sum[i]为该位上的数码
t=s/10;//t为进位
s=0;
}
//输出
putchar(10);
if(t>0)
{
sum[i]=t;
for(s=i;s>=0;s--)printf("%c",sum[s]+48);
}
else
{
for(s=i-1;s>=0;s--)printf("%c",sum[s]+48);
}
getch();
}
Ⅱ C语言大数相加,在线等,急
效果:
#include<stdio.h>
#include<string.h>
voidreverse(chars[]){
intlen=strlen(s),h=len/2;
chartemp;
for(inti=0;i<h;++i){
temp=s[i];
s[i]=s[len-i-1];
s[len-i-1]=temp;
}
}
#defineSystem10
#defineMAX24
constcharmx='9';
constcharmn='0';
char*Sum(chars1[],chars2[]){
charans[MAX];
intlen1=strlen(s1),len2=strlen(s2),ad=0,min=len1<len2?len1:len2,max=len1>len2?len1:len2,i;
char*st1,*st2;
if(len1>len2){st1=s2;st2=s1;}
else{st1=s1;st2=s2;}
reverse(st1);
reverse(st2);
for(i=0;i<min;i++){
ans[i]=st1[i]+st2[i]-'0'+ad;
if(ans[i]>mx){
ans[i]-=System;
ad=1;
}
elsead=0;
}
while(ad!=0||i<max){
if(i<max)ans[i]=st2[i]+ad;
elseans[i]=mn+ad;
if(ans[i]>mx){
ans[i]-=System;
ad=1;
}
elsead=0;
i++;
}
ans[i]='