网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
1
题目内容:
由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。
(0,1)之间的任何浮点数都可以表达为两个正整数的商,为了表达这样两个数的商,可以将相除的结果存放在一维数组中,数组的每个元素存放一位十进制数字。即商的第一位存放在第一个元素中,第二位存放在第二个元素中,以此类推,就可以用数组来表达一个高精度的除法结果了。
如16/19的结果0.8421052631...就可以依次存放8、4、2、1、0、5、2、6、3、1...在数组中。
而除法的过程,则可以模仿人工列竖式做除法的方式,先将被除数乘以10,得到一位商以后,将余数乘以10作为下一轮计算的被除数:
160/19->8余8
80/19->4余4
...
当某次余数为0时,则表明除尽。
现在,请写一个程序,输入一个分数,计算出它的小数形式。无论是否可以除尽,输出最多小数点后200位。
输入格式:
形如
a/b
的两个数,其中10<=a<b<100。
输出格式:
形如
0.xxxxxxxxx
的小数,小数点后最多200位。输出结束的时候要带着回车换行。
输入样例:
16/19
输出样例:
0.84210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
#include <stdlib.h> #define N 200//N是数组的元素个数 int num[N];//全局变量,数组 void print(int num[])//打印数组
{
int i = ;//数组下标 for (i = ; i < N; i++)
{
if (num[i] == -)//-1需要停止
{
break;
}
printf("%d", num[i]);
}
} void xiaoshu(int num[], int a, int b)//计算分数精确值
{
int i;//数组下标
int shang = a * / b;//商,先将被除数乘以10,得到一位商
int yu = a * % b;//余数
num[] = shang;//可以将相除的结果存放在一维数组中,数组的每个元素存放一位十进制数字 if (!yu)//当某次余数为0时,则表明除尽
{
return;
} for (i = ; i < N; i++)
{
shang = yu * / b;//将余数乘以10作为下一轮计算的被除数
yu = yu * % b;//余数 num[i] = shang;//可以将相除的结果存放在一维数组中,数组的每个元素存放一位十进制数字 if (!yu)//当某次余数为0时,则表明除尽
{
return;
}
}
} void clear(int num[])//初始化数组,均置为-1
{
int i;//数组下标 for (i = ; i < N; i++)
{
num[i] = -;
}
} main()
{
int a;//被除数
int b;//除数 scanf("%d/%d", &a, &b);//输入 clear(num);//初始化数组,均置为-1 xiaoshu(num, a, b);//计算分数精确值 printf("0.");//输出格式:形如0.xxxxxxxxx print(num);//打印数组 printf("\n");//输出结束的时候要带着回车换行 system("pause");
}
网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值的更多相关文章
- 网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告
2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一 ...
- 网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合
3.1 枚举 3.2 结构 3.3 类型定义 3.1 枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明: enum 枚举类型名字{名字0,...,名字n}; 枚举类型名字通常并不 ...
- 网易云课堂_C语言程序设计进阶_第6周:程序结构
6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它 ...
- 网易云课堂_C语言程序设计进阶_期末考试编程题部分
1 字符串循环右移(5分) 题目内容: 输入一个字符串和一个非负整数N,要求将字符串循环右移N次. 输入格式: 输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未 ...
- 网易云课堂_C语言程序设计进阶_第8周:图形交互程序
8.2函数指针 8.2函数指针 #include <stdio.h> #include <stdlib.h> void f(int i) { printf("void ...
- 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出
7.1文件 7.2底层操作 7.1文件 格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) ...
- 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列
1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...
- 网易云课堂_C语言程序设计进阶_第5周:链表
5.1可变数组 5.2链表 5.1可变数组 Resizable Array Think about a set of functions that provide a mechanism of res ...
- 网易云课堂_C语言程序设计进阶_第四周:ACL图形库
创建ACLLib程序 #include"acllib.h" #include<stdio.h> int Setup1() { initWindow(, );//初始化窗 ...
随机推荐
- 正式学习React(一) 开始学习之前必读
为什么要加这个必读!因为webpack本身是基于node环境的, 里面会涉及很多路径问题,我们可能对paths怎么写!webpack又是怎么找到这些paths的很迷惑. 本文是我已经写完正式学习Rea ...
- Oracle 11gR2 RAC 安装配置
1. 简介 Oracle RAC,全称real application clusters,译为"实时应用集群", 是Oracle新版数据库中采用的一项新技术,是高可用性的一种, ...
- QtWaitingSpinner
https://github.com/snowwlex/QtWaitingSpinner
- Blacksmith test
最近使用Blacksmith 对各种K,V数据库做了一些测试,从中了解了一些各种数据库的设计方式,比较各种数据库的性能 BlaskSmith是我们自己的产品,详细的产品信息可以在github上看到 h ...
- Unix/Linux环境C编程入门教程(25) C/C++字符测试那些事儿
isalnum isalpha isascii iscntrl isdigit isgraph isislower isprint isspace ispunct isupper isxdigit介绍 ...
- 国内外DNS服务器地址列表
DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是把域名转换成为网络可以识别的IP地址.目前国内电信运营商通过使用DNS劫持的方法,干扰用户正常上网,使得用户无法 ...
- 【转】zookeeper 的监控工具
公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开发团队自己写的浏览器node-z ...
- oracle后台进程2
oracle中的进程共分为三类:用户进程.服务进程.后台进程.其中后台进程伴随实例的启动而启动,他们主要是维护数据库的稳定,相当于一个企业中的管理者及内部服务人员.他们并不会直接给用户提供服务. 一: ...
- ADO.NET DataSet、DataTable、DataRow、DataView的学习
对于一个datatable中的数据进行嵌套查询判断某几列数据是否相同从而确定这条数据是否一样,并确定他重复的次数COUNT1字段. 例如: DataTable dt = new DataTable() ...
- JS中slice,splice,split的区别
不知道大家对slice,splice,splite是肿么样的感觉,反正我刚接触到这三个函数的时候整个人都懵了,因为一个个长的跟孪生兄弟似的,每次用的时候都会混,于是决定记下来,也给大家当个参考吧. s ...