大数相乘
来源:互联网 发布:自动阅读软件 编辑:程序博客网 时间:2024/06/07 18:43
#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 100void GetDigits(int *a,char *s);void multiply(int *a,int *b,int *c);main(){ char s1[N],s2[N]; int i,j,a[N],b[N],c[N*2]; printf("\n input number a: "); scanf("%s",s1); printf("\n input number b: "); scanf("%s",s2); //把输入的字符串,按位存放到数组 GetDigits(a,s1); GetDigits(b,s2); multiply(a,b,c); //找到最高位 j=N*2-1; while(c[j]==0) j--; //打印计算结果 printf("\n %s * %s=",s1,s2); for(i=j;i>=0;i--) printf("%d",c[i]);}/*把字符串形式的数字按位存放到数组*/void GetDigits(int *a, char *s){ int i; char digit; int len=strlen(s); for(i=0;i<N;i++) *(a+i)=0; for(i=0;i<len;i++) { digit=*(s+i); *(a+len-1-i) = digit - '0'; }}/*把a*b的结果存储到数组c中,按位表示*/void multiply(int *a,int *b,int *c){ int i,j; //先把结果数组设置为0zsw for(i=0;i<N*2;i++) *(c+i)=0; for(i=0;i<N;i++) for(j=0;j<N;j++) *(c+i+j)+=*(a+i) * *(b+j); // 处理进位 for(i=0;i<N*2-1;i++) { *(c+i+1)+=*(c+i)/10; //进位累加到高位 *(c+i)=*(c+i)%10; //该位的最后结果 }}
0 0
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- 大数相乘
- Corporative Network +uvalive+并查集
- 广义霍夫变换GHT
- CF 256# D. Multiplication Table 二分
- C++ Primer Plus第六版 第七章 编程练习答案
- teamviewer原理和阻止方法
- 大数相乘
- 将整形转化为字符串
- POJ 3254 Corn Fields 状压DP
- 1+11+111+1111+11111+……+11……11(2009个1)的和有多少个1?
- kobo touch N905B刷Koreader
- js全选和反选
- 4329 - Ping pong uvalive+树状数组
- DNS递归查询和迭代查询的区别
- 判断combobox是否为用户手动输入