大数据:add

来源:互联网 发布:视频照片制作软件 编辑:程序博客网 时间:2024/06/03 03:32
#include <stdio.h>#include <stdlib.h>#include <string.h>void add(char *s1,char *s2,char *ret){int len1=strlen(s1);int len2=strlen(s2);int max,min;if(len1>=len2)     {    max=len1;    min=len2;    }else     {    max=len2;    min=len1;    }int len3=max+1;int i,j,k,m;i=min-1;j=max-1;k=len3-1;char *s=(char *)malloc(sizeof(char)*len3);memset(s,'0',len3);//对结果各位赋值为'0'/*for(m=0;m<len3;m++)//对结果各位赋值为'0'    s[m]='0';*///不考虑进位,进行加法计算/////////////////////////////////if(min==len1)    {    for(; i>=0;i--)         {        s[k]=s1[i]+s2[j]-'0';        k--;        j--;        }    for(;j>=0;j--,k--)        {        s[k]=s2[j];        }    }else    {    for(; i>=0;i--)         {        s[k]=s2[i]+s1[j]-'0';        k--;        j--;        }    for(;j>=0;j--,k--)        {        s[k]=s1[j];        }    }///////////////////////////for(k=len3-1;k>=0;k--) //处理各位的进位    {    if(s[k]>'9')        {        //ret[k]=ret[k]%58+'0';        s[k]=s[k]-10;        s[k-1]++;        }    //printf("%c",ret[k]);    }/////////////////////////////////////i=0;while(s[i]=='0')//处理前导零的情况    i++;for(j=0;i<len3;i++,j++) //计算最终结果    ret[j]=s[i];ret[j]='\0';free(s);}int main(){char str1[100];char str2[100];char str3[100+1];int i;memset(str1,0,sizeof(str1));memset(str2,0,sizeof(str2));memset(str3,0,sizeof(str3));printf("请输入第一个数:\n");gets(str1);printf("请输入第二个数:\n");gets(str2);add(str1,str2,str3);for(i=0;i<strlen(str3);i++)    printf("%c",str3[i]);    return 0;}
0 0
原创粉丝点击