c语言长整数除法,大整数除法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//两个串表示数的除法,结果精确到小数点后第n位
char *sdivf(char *u, char *v, int n)
{
char *p, *f, *r, *q ;
unsigned int i, lu, lv, lr, iw, c, h ;
int kh, j ;
lu = strlen(u) ;
lv = strlen(v) ;
f = (char *)malloc((unsigned int)(lu + n + 3) * sizeof(char)) ;
q = (char *)malloc(sizeof(char)) ;
for (i = 0; i
f[i] = '\0' ;
r = (char *)malloc((unsigned int)(lv + 2) * sizeof(char)) ;
for (i = 0; i
r[i] = '\0' ;
for (iw = 0; iw
{
if (iw
{
cdel0(r) ;
lr = strlen(r) ;
r[lr] = u[iw] ;
r[lr + 1] = '\0' ;
}
else if (iw > lu)
{
cdel0(r) ;
q[0] = '0' ;
if (scmp(r, q) == 0)
{
break ;
}
lr = strlen(r) ;
r[lr] = '0' ;
r[lr + 1] = '\0' ;
}
else
{
f[lu] = '.' ;
continue ;
}
kh = 0 ;
while (scmp(r, v) >= 0)
{
p = r ;
r = ssub(p, v) ;
++kh ;
}
f[iw] = kh + '0' ;
}
if (iw == lu + n + 2)
{
if (f[lu + n + 1] >= '5')
{
f[lu + n + 1] = '\0' ;
c = 1 ;
for (j = lu + n; j >= 0; --j)
{
if (c == 0)
{
break ;
}
if (f[j] == '.')
{
continue ;
}
h = f[j] - '0' + c ;
if (h > 9)
{
h = h - 10 ;
c = 1 ;
}
else
c = '\0' ;
f[j] = h + '0' ;
}
}
else
f[lu + n + 1] = '\0' ;
}
free(r) ;
free(p) ;
q = NULL ;
free(q) ;
cdel0(f) ;
return(f) ;
}//end sdivf()
//两个串表示数的除法,结果分别用整商与余数表示
char *sdivkr(char *u, char *v, char **rout)
{
char *f, *r ;
unsigned int i, lu, lv, lr, iw ;
int kh ;
lu = strlen(u) ;
lv = strlen(v) ;
f = (char *)malloc((unsigned int)(lu + 1) * sizeof(char)) ;
for (i = 0; i
f[i] = '\0' ;
r = (char *)malloc((unsigned int)(lv + 2) * sizeof(char)) ;
for (i = 0; i
r[i] = '\0' ;
for (iw = 0; iw
{
cdel0(r) ;
lr = strlen(r) ;
r[lr] = u[iw] ;
r[lr + 1] = '\0' ;
kh = 0 ;
while (scmp(r, v) >= 0)
{
r = ssub(r, v) ;
++kh ;
}
f[iw] = kh + '0' ;
}
cdel0(r) ;
*rout = r ;
cdel0(f) ;
return(f) ;
}//end *sdivkr()
//调用上述函数实现两任意长正整数任意指定精度的算术计算器程序
int main(int argc, char *argv[])
{
char *p, *r ;
int n ;
if (argc != 4)
{
if (argc != 3)
printf("\n>>\"order n1 op n2\" or n ! ") ;
exit(0) ;
}
cdel0(argv[1]);
if (cchkdig(argv[1]) == 0)
{
printf("Input data error, Input again!") ;
exit(0) ;
}
cdel0(argv[3]) ;
if (cchkdig(argv[3]) == 0)
{
printf("Input data error, Input again!") ;
exit(0) ;
}
if (strcmp(argv[2], "+") == 0)
{
printf("%s", p = sadd(argv[1], argv[3])) ;
free(p) ;
}
else if (strcmp(argv[2], "-") == 0)
{
printf("%s", p = ssub(argv[1], argv[3])) ;
free(p) ;
}
else if(strcmp(argv[2], "*") == 0)
{
printf("%s", p=smut(argv[1], argv[3])) ;
free(p) ;
}
else if(argv[2][0] == '/' && strlen(argv[2]) == 1)
{
if (argv[3][0] == '0')
{
printf("error!devided by zero!!\n") ;
exit(0) ;
}
p = sdivkr(argv[1], argv[3], &r) ;
printf("k = %s r = %s", p, r) ;
free(p) ;
free(r) ;
}
else if (argv[2][0] == '/' && strlen(argv[2]) > 1)
{
if (argv[3][0] == '0')
{
printf("error!devided by zero!!\n") ;
exit(0) ;
}
argv[2][0] = '\0' ;
cdel0(argv[2]) ;
if (cchkdig(argv[2]) == 0)
{
printf("Input data error, Input again!") ;
exit (0) ;
}
n = atoi(argv[2]) ;
printf("%s", p = sdivf(argv[1], argv[3], n)) ;
free(p) ;
}
return 0 ;
}
c语言长整数除法,大整数除法相关推荐
- Bailian2737 大整数除法【大数】
2737:大整数除法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个大的正整数相除的商. 输入 第1行是被除数,第2行是除数.每个数均不超过100位. 输出 一行,相应的商的整数 ...
- 1.13 编程基础之综合应用 47 大整数除法方法 python
http://noi.openjudge.cn/ch0113/47/ """ 1.13 编程基础之综合应用 47 大整数除法方法一 http://noi.openjudg ...
- C++ 大整数除法 | 大整数乘法
大整数除法 L1-046. 整除光棍 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数 ...
- NOI1.13.47 大整数除法 题解(C++)
NOI1.13.47 大整数除法 题解(C++) 这题一看题目就知道绝非普通的long long 或 int .这可是高精度呀. 题目 47:大整数除法 总Time Limit: 1000ms Mem ...
- 求一个整数的权重 c语言,Code Kata:大整数四则运算—乘法 javascript实现
上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...
- python不同版本中浮点除法和整数除法
python2.7版本 本文针对浮点除法和整数除法做了以下实验: print 15/10 1 print 15.0/10 1.5 print -15/10 -2 print 15//10 1 prin ...
- c/c++ 大整数除法
运算思路如下思路: 以1234 / 7为例: 1与7比较, 不够除, 因此该位商为 0, 余数为1. 余数1与新位 2组合成12, 12与7比较, 够除, 商为1, 余数为5. 余数 5与新位 3组合 ...
- 高精度计算-大整数除法
问题描述 求两个大的正整数相除的商 输入数据 第 1 行是测试数据的组数 n,每组测试数据占 2 行,第 1 行是被除数,第 2 行是除数. 每组测试数据之间有一个空行,每行数据不超过 100 个字符 ...
- C语言编程之大整数加法
1. C语言整数运算 C语言的整数类型有: int,short,long 三种,同时可以冠以unsigned,signed来标识无符号整数及有符号整数. 针对不同的环境,每种类型的长度不同,因此,在不 ...
最新文章
- 给Nginx配置一个自签名的SSL证书
- Windows 下连接mysql工具NavicatForMysql
- Windows10内置Linux子系统初体验
- 国二c语言改错题答案,c语言国二考试编程题答案
- BITPOS key bit [start] [end]
- linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
- gevent模块的使用
- 变量在函数内外的作用域 3
- android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入
- 事态升级是什么意思_为什么有的人越到关键时刻越容易掉链子?记住不要有“赌徒心理”...
- 程序员面试金典——5.7找出缺失的整数
- 【云周刊】第125期:“机器学习”三重门_“中庸之道”趋若人
- Linux中安装JDK并配置环境变量
- Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法
- matlab gui 保存文件,Matlab GUI的文件打開和保存uigetfile uigetdir
- VastBase账户锁The account has been locked
- eclipse的下载、安装
- mysql in数量限制_SQL语句中in的个数限制为1000
- DM8达梦数据库学习总结(上)
- 知识点滴 - 关于苹果认证MFI
热门文章
- 清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录
- 我用Python帮朋友做了张猪肉数据分析图,结果。。。
- 高能预警!Apache Flink Meetup · 上海站返场啦
- ASP.NET状态管理之六(缓存Cache)
- 《信息熵,联合熵,条件熵,交叉熵,相对熵》
- python查看运行内存占用_python中使用psutil查看内存占用的情况
- 【图像处理】射线爆发算法(Rayburst algorithm)
- 深度学习的实用层面 —— 1.5 为什么正则化可以减少过拟合
- Matlab--三种工具绘制errorbar图
- Maven核心概念及Eclipse使用Maven