该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//两个串表示数的除法,结果精确到小数点后第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语言长整数除法,大整数除法相关推荐

  1. Bailian2737 大整数除法【大数】

    2737:大整数除法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个大的正整数相除的商. 输入 第1行是被除数,第2行是除数.每个数均不超过100位. 输出 一行,相应的商的整数 ...

  2. 1.13 编程基础之综合应用 47 大整数除法方法 python

    http://noi.openjudge.cn/ch0113/47/ """ 1.13 编程基础之综合应用 47 大整数除法方法一 http://noi.openjudg ...

  3. C++ 大整数除法 | 大整数乘法

    大整数除法 L1-046. 整除光棍 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数 ...

  4. NOI1.13.47 大整数除法 题解(C++)

    NOI1.13.47 大整数除法 题解(C++) 这题一看题目就知道绝非普通的long long 或 int .这可是高精度呀. 题目 47:大整数除法 总Time Limit: 1000ms Mem ...

  5. 求一个整数的权重 c语言,Code Kata:大整数四则运算—乘法 javascript实现

    上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...

  6. python不同版本中浮点除法和整数除法

    python2.7版本 本文针对浮点除法和整数除法做了以下实验: print 15/10 1 print 15.0/10 1.5 print -15/10 -2 print 15//10 1 prin ...

  7. c/c++ 大整数除法

    运算思路如下思路: 以1234 / 7为例: 1与7比较, 不够除, 因此该位商为 0, 余数为1. 余数1与新位 2组合成12, 12与7比较, 够除, 商为1, 余数为5. 余数 5与新位 3组合 ...

  8. 高精度计算-大整数除法

    问题描述 求两个大的正整数相除的商 输入数据 第 1 行是测试数据的组数 n,每组测试数据占 2 行,第 1 行是被除数,第 2 行是除数. 每组测试数据之间有一个空行,每行数据不超过 100 个字符 ...

  9. C语言编程之大整数加法

    1. C语言整数运算 C语言的整数类型有: int,short,long 三种,同时可以冠以unsigned,signed来标识无符号整数及有符号整数. 针对不同的环境,每种类型的长度不同,因此,在不 ...

最新文章

  1. 给Nginx配置一个自签名的SSL证书
  2. Windows 下连接mysql工具NavicatForMysql
  3. Windows10内置Linux子系统初体验
  4. 国二c语言改错题答案,c语言国二考试编程题答案
  5. BITPOS key bit [start] [end]
  6. linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
  7. gevent模块的使用
  8. 变量在函数内外的作用域 3
  9. android 定制输入法,QQ输入法Android 4.3全新升级 实现私人定制输入
  10. 事态升级是什么意思_为什么有的人越到关键时刻越容易掉链子?记住不要有“赌徒心理”...
  11. 程序员面试金典——5.7找出缺失的整数
  12. 【云周刊】第125期:“机器学习”三重门_“中庸之道”趋若人
  13. Linux中安装JDK并配置环境变量
  14. Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法
  15. matlab gui 保存文件,Matlab GUI的文件打開和保存uigetfile uigetdir
  16. VastBase账户锁The account has been locked
  17. eclipse的下载、安装
  18. mysql in数量限制_SQL语句中in的个数限制为1000
  19. DM8达梦数据库学习总结(上)
  20. 知识点滴 - 关于苹果认证MFI

热门文章

  1. 清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录
  2. 我用Python帮朋友做了张猪肉数据分析图,结果。。。
  3. 高能预警!Apache Flink Meetup · 上海站返场啦
  4. ASP.NET状态管理之六(缓存Cache)
  5. 《信息熵,联合熵,条件熵,交叉熵,相对熵》
  6. python查看运行内存占用_python中使用psutil查看内存占用的情况
  7. 【图像处理】射线爆发算法(Rayburst algorithm)
  8. 深度学习的实用层面 —— 1.5 为什么正则化可以减少过拟合
  9. Matlab--三种工具绘制errorbar图
  10. Maven核心概念及Eclipse使用Maven