大數的加法函數--c語言


瀏覽網站http://paste.ubuntu.com/23687758/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * largeAdd(char a[],char b[]){
/*
//傳進來兩個個字符串,返回結果為字符串 錯誤字符返回NULL
大位數的加法函數 ,位數不能超過1000
要加頭文件<string.h>
*/
int a_num[1000]={0},b_num[1000]={0};
int a_len,b_len,i,j,len,sum;
char result[1001];
a_len=strlen(a);
b_len=strlen(b);
len=a_len>b_len?a_len:b_len;//返回較大的值
for(i=0;i<a_len;i++){
if(a[i]<'0'||a[i]>'9') return NULL;
a_num[a_len-i-1]=a[i]-'0';
}
for(i=0;i<b_len;i++){
if(b[i]<'0'||b[i]>'9') return NULL;
b_num[b_len-i-1]=b[i]-'0';
}
for(i=0;i<len;i++){
sum=a_num[i]+b_num[i];
a_num[i]=sum%10;
a_num[i+1]=a_num[i+1]+sum/10;
}

if(a_num[len]>0){
for(i=len;i>=0;i--){
result[len-i]=a_num[i]+'0';
}
result[len+1]='\0';
}else{
for(i=len-1;i>=0;i--){
result[len-i-1]=a_num[i]+'0';
}
result[len]='\0';
}
return result;
}
int main(){
char a[1000],b[1000];
char *result;
gets(a);
gets(b);
result=largeAdd(a,b);
printf("%s",result);
return 0;
}

//編程愛好者 QQ群 248351598


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM