对大数精度的处理(2)_大数乘小数
2014-04-03 20:17
176 查看
程序实现的效果:
输入一个数(10以内),再输入一个大数(位数不限);
输出两者的乘积过程中进位情况,以及乘积结果值。
代码:
5
123456
3
2
2
1
1
0
617280
Press any key to continue
输入一个数(10以内),再输入一个大数(位数不限);
输出两者的乘积过程中进位情况,以及乘积结果值。
代码:
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int main() { int m,k,flag; char c[100],t[1000]; char s[100]; cin>>m; int i,l=0,add=0; scanf("%s",c); l=strlen(c); for(i=0;i<l;i++)//将字符串数组c[],倒序赋值给字符数组s[],因为按照乘法法则,先从个位开始 s[l-i-1]=c[i]-'0'; for(i=0;i<l;i++) { k = s[i] * m + add;//k等于每一位(先从个位开始,‘个十百千的顺序’)与 m 相乘的结果,add表示进位数。 if(k >= 10){ s[i] = k % 10; add = k / 10; flag = 1;//flag表示是否有进位(即k是否大于‘10’)的两种情况,等于‘1’,为有,否则,等于‘0’,为无。 } else{ s[i] = k; flag = 0; add = 0; } cout<<add<<endl; } if(flag){//根据flag的取值判断,长度 l,是否增加‘1’.从而判断s[i]的值,是否为add; l = i + 1 ; s[i] = add ; } else l=i; for(i=0;i<l;i++){//把字符数组s[],倒序赋值给字符数组t[],就可以把结果正序输出。 t[l-i-1] = s[i] + '0'; t[l] = '\0'; } for(i=0;i<l;i++) cout<<t[i]; cout<<endl; return 0; }输入输出样例:
5
123456
3
2
2
1
1
0
617280
Press any key to continue
相关文章推荐
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- 对大数精度的处理(1)_大数阶乘
- javascript中可处理的浮点数的最高精度(和小数的一些小特性)
- 精度计算——乘法(大数乘小数)
- Js 对小数的处理(科学计数法 , 显示精度)
- js 对小数加法精度处理
- 精度计算————乘法(大数乘小数)
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- 精度计算-大数乘小数
- python模块-decimal小数精度处理-学习笔记28
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- C++大数精度计算(带小数点)
- js 对小数加法精度处理示例说明
- pandas 小数位数 精度的处理
- 在业务系统中处理小数精度,四舍五入,全舍弃,全进位的方法
- js 对小数加法精度处理示例说明
- 对大数精度的处理(3)_大数乘大数
- 精度计算:(二) 大数乘小数
- VC中处理小数精度
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定