TA的每日心情 | 无聊 2016-9-11 15:26 |
---|
签到天数: 107 天 连续签到: 1 天 [LV.6]常住居民II 扫一扫,手机访问本帖
|
- #include <stdio.h>
- #include <string.h>
- #include <malloc.h>
- #include <stdlib.h>
- void add(char a[], char b[]);
- void main(void)
- {
- char f;
- char a[200], b[200];
- scanf("%s", &a);
- scanf("%s", &f);
- scanf("%s", &b);
- if(f=='+')
- {
- printf("加法运算:\n");
- add(&a, &b);
- }
- }
- //加法
- void add(char a[], char b[])
- {
- int la=strlen(a), lb=strlen(b);
- int ls, i, rem=0;
-
- int *pa=(int*)malloc(sizeof(int)*la);
- int *pb=(int*)malloc(sizeof(int)*lb);
- int *ps;
- (la>lb)?(ls=la):(ls=lb);
- ps=(int*)malloc(sizeof(int)*ls);
- for(i=0;i<la;i++)
- {
- pa[i]=a[i]-48;
- }
- for(i=0;i<lb;i++)
- {
- pb[i]=b[i]-48;
- }
- i=0;
- while(la>0 && lb>0)
- {
- int sum=pa[la-1]+pb[lb-1];
- ps[i]=rem+(sum%10);
- rem=0;
- if(sum>9)
- rem=sum/10;
- i++;
- la--;
- lb--;
- }
- if(la>0)
- {
- while(la>0)
- {
- int sum=rem+pa[la-1];
- ps[i]=sum%10;
- rem=0;
- if(sum>9)
- rem=sum/10;
- i++;
- la--;
- }
- }else
- if(lb>0)
- {
- while(lb>0)
- {
- int sum=rem+pb[lb-1];
- ps[i]=sum%10;
- rem=0;
- if(sum>9)
- rem=sum/10;
- i++;
- lb--;
- }
- }
- if(rem>0)
- {
- ps[i]=rem;
- i++;
- }
- printf("和为:\n");
- while(i>0)
- {
- printf("%d", ps[i-1]);
- i--;
- }
- printf("\n");
- }
复制代码
|
|