精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>C、C++语言基础>>考考大家:重庆大学的计算机专业工程硕士的入学考试

主题:考考大家:重庆大学的计算机专业工程硕士的入学考试
发信人: 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'); 


:...... 
 
 

[关闭][返回]