TA的每日心情 | 无聊 2016-9-11 15:26 |
---|
签到天数: 107 天 连续签到: 1 天 [LV.6]常住居民II 扫一扫,手机访问本帖
|
- #include <stdio.h>
- #include <string.h>
- #include <malloc.h>
- #include <stdlib.h>
- void minus(char a[], char b[], char ch); //减法运算
- int isnev(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");
- if(isnev(&a, &b)==1)
- minus(&a, &b, '+');
- else
- minus(&b, &a, '-');
- }
- }
- //判断差的符号
- int isnev(char a[],char b[])
- {
- int l1,l2;
- l1=strlen(a);
- l2=strlen(b);
- if (l1>l2)
- {
- return 1;
- }
- else if (l1<l2)
- {
- return 0;
- }
- else
- {
- if (strcmp(a,b)>=0)
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- }
- //减法运算
- void minus(char a[], char b[], char ch)
- {
- int la=strlen(a), lb=strlen(b);
- int lm=la;
- int i;
- int *pa=(int*)malloc(sizeof(int)*la);
- int *pb=(int*)malloc(sizeof(int)*lb);
- int *pm=(int*)malloc(sizeof(int)*lm);
- printf("符号:%c\n", ch);
- 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(lb>0)
- {
- int x, y;
- x = pa[la-1];
- y = pb[lb-1];
- if(x>=y)
- pm[i]=x-y;
- else
- {
- //借位
- int k=la-2;
- if(pa[k]>0)
- {
- x = x+10;
- pa[k]=pa[k]-1;
- }else
- {
- while(pa[k]==0)
- {
- pa[k]=9;
- k--;
- }
- pa[k]=pa[k]-1;
- x=x+10;
- }
- pm[i]=x-y;
- }
- i++;
- la--;
- lb--;
- }
- while(la>0)
- {
- pm[i] = pa[la-1];
- i++;
- la--;
- }
- printf("差为:\n");
- if(ch=='-')
- printf("%c", ch);
- while(i<=0 || pm[i-1]==0)
- {
- i--;
- }
- while(i>0)
- {
- printf("%d", pm[i-1]);
- i--;
- }
- printf("\n");
- }
复制代码
|
|