flash数字字符串或运算

2020-09-21 社会 72阅读

#include 
#include 
#include 
char *reverse(char *s);
char *add(char *a,char *b);
int main(void) 
{
char a[100+1]={0},b[100+1]={0},*c;
memset(a,'3',sizeof(a)-1);
memset(b,'6',sizeof(b)-1);
c=add(a,b);
printf("%s\n",c);
free(c);
return 0;
}
char *reverse(char *s)
{
char *p=s,*q=s+strlen(s)-1,t;
for(;p {
t=*p;
*p=*q;
*q=t;
}
return s;
}
char *add(char *a,char *b)
{
int maxlen=strlen(a)>strlen(b)?strlen(a):strlen(b);
char *c=(char *)malloc(maxlen+2),carr;
char *p=c;
reverse(a);
reverse(b);
for(carr=0;*a||*b;p++)
{
if(*a&&*b)
{
*p=(*a+*b-'0'+carr)>'9'?(*a+*b-'0'+carr)-10:(*a+*b-'0'+carr);
carr=(*a+*b-'0'+carr)>'9'?1:0;
a++;
b++;
}
else
{
if(*a)
{
*p=(*a+carr)>'9'?(*a+carr)-10:(*a+carr);
carr=(*a+carr)>'9'?1:0;
a++;
}
else
{
*p=(*b+carr)>'9'?(*b+carr)-10:(*b+carr);
carr=(*b+carr)>'9'?1:0;
b++;
}
}
}
if(carr)
{
*p++='0'+carr;
*p='\0';
}
else
{
*p='\0';
}
reverse(c);
return c;
}

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com