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

//两个串表示数的除法,结果精确到小数点后第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. c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc

    大整数四则运算 高质量C语言程序 设计题目: 大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构. 课程设计要求:采用模块化程序设计 源程序中应有足够的 ...

  2. 算法分析c语言大整数乘法,大整数乘法浅析(C语言实现)

    1.引言 最近在做学校网上的OJ题时,碰到了高精度加法和乘法的运算.加法没有太多实现上的困难,但是乘法却卡了一会儿,在网上搜集材料时,很多都是直接贴上了代码,没有具体的分析.为了巩固自己的学习成果并且 ...

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

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

  4. 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总

    Java语言中常用的漏洞大汇总,建议收藏. 准备好,上课了~~~ 目录 Servlet 简介 生命周期为 接口 Struts 2 . 简介 请求流程 相关CVE Spring 简介 Spring MV ...

  5. C语言中利用宏,实现一个整数的奇数位和偶数位交换,以及计算结构体中某变量相对于首地址的偏移

    C语言中的自定义宏 自定义宏,令其实现所需功能 1.写一个宏,可以将一个整数字的奇数位和偶数位交换. 2.写一个宏,计算结构体中某变量相对于首地址的偏移. 具体思路1: 首先取出当前数的奇数部分和偶数 ...

  6. c语言长整数除法,大整数除法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //两个串表示数的除法,结果精确到小数点后第n位 char *sdivf(char *u, char *v, int n) { char *p, *f,  ...

  7. 2_C语言中的数据类型 (四)整数与无符号数

    1.1       sizeof关键字 sizeof是c语言关键字,功能是求指定数据类型在内存中的大小,单位:字节 sizeof与size_t类型 1.1       int类型 1.1.1      ...

  8. c语言中如何将字体弄大,CFree怎样调大字体

    CFree作为一款专业的编程工具,它可以帮助用户轻松解决解析输入的代码程序,小编了解到很多用户不知道怎样调大字体,如果你想要设置字体的方法,就赶快来看看下面的操作方法,相信只要你看完就会明白的! 操作 ...

  9. c语言中字节数如何判断,C语言中怎样判断输入的是整数还是浮点数

    满意答案 syl330046 2017.05.11 采纳率:43%    等级:7 已帮助:1058人 scanf(%s,str);//先存成字符串if(NULL==strchr(str,'.'))/ ...

  10. scanf读取字符_在C语言中使用scanf()读取整数时跳过字符

    scanf读取字符 Let suppose, we want to read time in HH:MM:SS format and store in the variables hours, min ...

最新文章

  1. MFC底层窗口的实现
  2. Nginx的负载均衡 - 保持会话 (ip_hash)
  3. SQL基础操作_8_基础概念
  4. Ubuntu安装vmtools
  5. redis复制_Redis复制
  6. Python学习笔记(随机数)
  7. 视频大压缩的具体操作方法
  8. 程序设计 关键字解释
  9. SpringData JDBC
  10. plc算法相关论文参考
  11. 狗年出生的宝宝取名都有哪些注意事项呢?起名真不是简单事
  12. 云服务器哪家最好,如何选择云服务器
  13. Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
  14. 半角数字验证 Encoding
  15. 我打算去广东第一“鬼城”,买房安家
  16. python xposed_Xposed插件开发进阶篇
  17. 史上最牛二分查找,不服来战
  18. Theano安装教程
  19. linux-tomcat下载安装(最新)
  20. 帝国cms 修改系统自带语言模板文件

热门文章

  1. 网易云音乐自动获取前三首歌曲名称
  2. 安装虚拟机报错 This kernel requires an X86-64 CPU,but only detected an i686 CPU
  3. python DEA: by-product NDDF DEA模型
  4. Sublime Text, MikTeX (或TeXLive), SumatraPDF 配置LaTeX开发环境
  5. 苹果手机搭建php服务器,给自己搭建iPhone Installer软件源
  6. 【笔记】openwrt - Dnsmasq替换SmartDns+ADguardHome、koolproxy
  7. echarts矢量地图基本实现
  8. CodeBlocks下载及安装教程(小白图解)
  9. VMware密匙安装教程
  10. J2EE框架(StrutsHibernateSpring)的理解