发信人: wenbobo(灌了拂衣去)
整理人: wenbobo(2002-12-06 22:08:55), 站内信件
|
完成 "123"+"4567"="4690"的计算功能,答案我暂时不讲……:p
#include<stdio.h>
#include<string.h>
char *StrNumAdd(char *p1,char *p2);
int main(void)
{
char *s1="123",*s2="4567";
printf("\n=%s",StrNumAdd(s1,s2));
/* 输出为 = 4690*/
return 0;
}
/*完成 "123"+"4567"="4690"的计算功能*/
char *StrNumAdd(char *p1,char *p2)
{ char p3[201]="",*pi=p3;
int temp,flag = 0;
strrev(p1);strrev(p2);
while(*p1||*p2)
__在此处填一条语句__________
*pi='\0';
strrev(p3);
return p3;
}
----
这样的可读性最好:
tmp = ((*p1)?*(p1++)-'0':0) + ((*p2)?*(p2++)-'0':0) + flag, flag = tmp / 10, *(pi++) = '0' + tmp % 10;
【 在 zelor 的大作中提到:】
: 不考虑顶上这个问题,我凑了个答案:
:
:*pi++ = (flag = (temp = (*p1++) - '0' + (*p2++) - '0' + flag) > 9?
: 1 : 0) == 0 ? (temp + '0') : (temp - 10 + '0');
:
:
:......
|
|