#include <stdio.h> #include <string.h> #include <malloc.h> #define N 100 int main() { int i,j; bool flag = false; char s1[N],s2[N]; printf("输入被乘数:\n"); scanf("%s",s1); printf("输入乘数:\n"); scanf("%s",s2); int len1 = strlen(s1); int len2 = strlen(s2); int len = len1 + len2 + 1; char *a = (char*)malloc(len1*sizeof(char)); char *b = (char*)malloc(len2*sizeof(char)); char *c = (char*)malloc(len*sizeof(char)); for(i=0;i<len;i++) c[i]=0; for(i=0;i<len1;i++)//倒置 a[i] = s1[len1-1-i] - '0'; for(i=0;i<len2;i++) b[i] = s2[len2-1-i] - '0'; for(i=0;i<len1;i++)//各位相乘 for(j=0;j<len2;j++) c[i+j] += a[i]*b[j]; for(i=0;i<len;i++)//进位 if(c[i] > 9) { c[i+1] += c[i]/10; c[i] %= 10; } printf("结果为:\n"); for(i=len-1;i>=0;i--) { if(flag) { c[i] += '0'; printf("%c",c[i]); } else if(c[i] != 0)//判断最高位是不是0 { c[i] += '0'; printf("%c",c[i]); flag = true; } } printf("\n"); free(a); free(b); free(c); a = NULL; b = NULL; c = NULL; return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。