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语言中怎么避免整数除法,大整数除法相关推荐
- c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc
大整数四则运算 高质量C语言程序 设计题目: 大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构. 课程设计要求:采用模块化程序设计 源程序中应有足够的 ...
- 算法分析c语言大整数乘法,大整数乘法浅析(C语言实现)
1.引言 最近在做学校网上的OJ题时,碰到了高精度加法和乘法的运算.加法没有太多实现上的困难,但是乘法却卡了一会儿,在网上搜集材料时,很多都是直接贴上了代码,没有具体的分析.为了巩固自己的学习成果并且 ...
- C++ 大整数除法 | 大整数乘法
大整数除法 L1-046. 整除光棍 这里所谓的"光棍",并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数 ...
- 【网络安全入门大总结】—Java语言中常用的渗透漏洞大汇总
Java语言中常用的漏洞大汇总,建议收藏. 准备好,上课了~~~ 目录 Servlet 简介 生命周期为 接口 Struts 2 . 简介 请求流程 相关CVE Spring 简介 Spring MV ...
- C语言中利用宏,实现一个整数的奇数位和偶数位交换,以及计算结构体中某变量相对于首地址的偏移
C语言中的自定义宏 自定义宏,令其实现所需功能 1.写一个宏,可以将一个整数字的奇数位和偶数位交换. 2.写一个宏,计算结构体中某变量相对于首地址的偏移. 具体思路1: 首先取出当前数的奇数部分和偶数 ...
- c语言长整数除法,大整数除法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //两个串表示数的除法,结果精确到小数点后第n位 char *sdivf(char *u, char *v, int n) { char *p, *f, ...
- 2_C语言中的数据类型 (四)整数与无符号数
1.1 sizeof关键字 sizeof是c语言关键字,功能是求指定数据类型在内存中的大小,单位:字节 sizeof与size_t类型 1.1 int类型 1.1.1 ...
- c语言中如何将字体弄大,CFree怎样调大字体
CFree作为一款专业的编程工具,它可以帮助用户轻松解决解析输入的代码程序,小编了解到很多用户不知道怎样调大字体,如果你想要设置字体的方法,就赶快来看看下面的操作方法,相信只要你看完就会明白的! 操作 ...
- c语言中字节数如何判断,C语言中怎样判断输入的是整数还是浮点数
满意答案 syl330046 2017.05.11 采纳率:43% 等级:7 已帮助:1058人 scanf(%s,str);//先存成字符串if(NULL==strchr(str,'.'))/ ...
- scanf读取字符_在C语言中使用scanf()读取整数时跳过字符
scanf读取字符 Let suppose, we want to read time in HH:MM:SS format and store in the variables hours, min ...
最新文章
- MFC底层窗口的实现
- Nginx的负载均衡 - 保持会话 (ip_hash)
- SQL基础操作_8_基础概念
- Ubuntu安装vmtools
- redis复制_Redis复制
- Python学习笔记(随机数)
- 视频大压缩的具体操作方法
- 程序设计 关键字解释
- SpringData JDBC
- plc算法相关论文参考
- 狗年出生的宝宝取名都有哪些注意事项呢?起名真不是简单事
- 云服务器哪家最好,如何选择云服务器
- Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
- 半角数字验证 Encoding
- 我打算去广东第一“鬼城”,买房安家
- python xposed_Xposed插件开发进阶篇
- 史上最牛二分查找,不服来战
- Theano安装教程
- linux-tomcat下载安装(最新)
- 帝国cms 修改系统自带语言模板文件
热门文章
- 网易云音乐自动获取前三首歌曲名称
- 安装虚拟机报错 This kernel requires an X86-64 CPU,but only detected an i686 CPU
- python DEA: by-product NDDF DEA模型
- Sublime Text, MikTeX (或TeXLive), SumatraPDF 配置LaTeX开发环境
- 苹果手机搭建php服务器,给自己搭建iPhone Installer软件源
- 【笔记】openwrt - Dnsmasq替换SmartDns+ADguardHome、koolproxy
- echarts矢量地图基本实现
- CodeBlocks下载及安装教程(小白图解)
- VMware密匙安装教程
- J2EE框架(StrutsHibernateSpring)的理解