TA的每日心情 | 无聊 2016-9-11 15:26 |
---|
签到天数: 107 天 连续签到: 1 天 [LV.6]常住居民II 扫一扫,手机访问本帖
|
- #include <stdio.h>
- #include <string.h>
- #include <malloc.h>
- #include <stdlib.h>
- void mul(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");
- mul(&a, &b);
- }
- }
- //乘法运算
- void mul(char a[], char b[])
- {
- int la=strlen(a), lb=strlen(b);
- int lm=la+lb, i, rem=0;
- int x, y;
- int k=0;
- int m;
- int *pa=(int*)malloc(sizeof(int)*la);
- int *pb=(int*)malloc(sizeof(int)*lb);
- int *pm=(int*)malloc(sizeof(int)*lm);
- for(i=0;i<la;i++)
- {
- pa[i]=a[i]-48;
- }
- for(i=0;i<lb;i++)
- {
- pb[i]=b[i]-48;
- }
- for(x=la-1;x>=0;x--)
- {
- i=k;
- for(y=lb-1;y>=0;y--)
- {
- int mul = pa[x] * pb[y];
- if(x==(la-1) || y==0)
- {
- pm[i] = mul;
- }else
- {
- pm[i] = pm[i]+mul;
- }
- i++;
- }
- k++;
- }
-
- m=i;
- for(i=0;i<m;i++)
- {
- int num = pm[i] + rem;
- pm[i] = num%10;
- rem = 0;
- if(num>9)
- rem = num/10;
- }
- if(rem>0)
- {
- pm[i] = rem;
- i++;
- }
- printf("积为:\n");
- while(i>0)
- {
- printf("%d",pm[i-1]);
- i--;
- }
- printf("\n");
- }
复制代码
|
|