C语言实现多达50位数相乘的运算
2018-03-15 14:41
330 查看
/* * 文件名:multiply.c * 功能:实现支持50位数乘以50位数<用bc命令验证结果> * 编辑人:王廷云 * 编辑时间:2017-12-20 */ #include <stdio.h> #include <string.h> #define NR 50 void reserverString(char *s); int main(void) { //+1===>'\0' char v1[NR+1],v2[NR+1],sum[2*NR+1]={0}; printf("输入乘数 :"); scanf("%s",v1); printf("输入被乘数:"); scanf("%s",v2); ///////////////////////////// //字符串翻转(数据低位在低下标) reserverString(v1); reserverString(v2); //printf("v1:%s\n",v1); //printf("v2:%s\n",v2); int i,j,num,flag; for(i=0;v1[i];i++)//乘数 { for(j=0;v2[j];j++)//被乘数 { //乘数I位 乘以 被乘数的J位 累加在积的I+J位 sum[i+j]=sum[i+j]+(v1[i]-'0')*(v2[j]-'0'); } //检查积是否可进位 flag=0; for(j=0;j<2*NR;j++) { num=sum[j]+flag; flag=num/10; sum[j]=num%10; } } ///////show result///////////// printf("积:"); for(i=2*NR;i>0;i--)//去除前导0 { if(sum[i]!=0) break; } while(i>=0) { printf("%d",sum[i]); i--; } putchar('\n'); return 0; } void reserverString(char *s) { int i,len=strlen(s); char temp; for(i=0;i<len/2;i++) { temp=s[i]; s[i]=s[len-1-i]; s[len-1-i]=temp; } }
相关文章推荐
- C语言之linux内核实现位数高低位互换
- C语言-将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
- 分数的四则运算及化简(C语言实现)
- 大整数加减运算的C语言实现
- 实现大位数相乘算法
- C语言实现两个矩阵相乘
- /*算法从9个数中取出3个3位数其中两个3位数相加等于另一个3位数其中每位数字不能重复,c语言怎么实现*/
- #奇葩论--关于C语言中的仅用"[]"运算符实现加法运算
- PAT 3-04 一元多项式的乘法与加法运算(C语言实现)
- 矩阵相乘 C语言实现
- C语言实现整数四则运算表达式的计算
- 大数相乘-C语言实现
- C语言通过逻辑运算(与或非)实现加法
- C语言实现只用加法和减法实现两个正整数的乘除运算
- C语言实现常见的矩阵运算函数
- 快排的三种实现,以及三种实现运算速度的比较 c语言
- Lua BitOp 提供5.1和5.2版本位操作运算 (跨平台C语言实现 说明部分1)
- C语言实现计算正整数的有效位数
- C语言实现大数相乘
- C语言实现一元多项式的加减运算