1

计算分数精确值(10分)

题目内容:

由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法。

(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

时间限制:500ms内存限制:32000kb
 
 #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计算分数精确值的更多相关文章

  1. 网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告

    2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一 ...

  2. 网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合

    3.1 枚举 3.2 结构 3.3 类型定义 3.1 枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明: enum 枚举类型名字{名字0,...,名字n}; 枚举类型名字通常并不 ...

  3. 网易云课堂_C语言程序设计进阶_第6周:程序结构

    6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它 ...

  4. 网易云课堂_C语言程序设计进阶_期末考试编程题部分

    1 字符串循环右移(5分) 题目内容: 输入一个字符串和一个非负整数N,要求将字符串循环右移N次. 输入格式: 输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未 ...

  5. 网易云课堂_C语言程序设计进阶_第8周:图形交互程序

    8.2函数指针 8.2函数指针 #include <stdio.h> #include <stdlib.h> void f(int i) { printf("void ...

  6. 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出

    7.1文件 7.2底层操作 7.1文件 格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) ...

  7. 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列

    1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...

  8. 网易云课堂_C语言程序设计进阶_第5周:链表

    5.1可变数组 5.2链表 5.1可变数组 Resizable Array Think about a set of functions that provide a mechanism of res ...

  9. 网易云课堂_C语言程序设计进阶_第四周:ACL图形库

    创建ACLLib程序 #include"acllib.h" #include<stdio.h> int Setup1() { initWindow(, );//初始化窗 ...

随机推荐

  1. SQL Server 错误18456

    第一步. 错误发生的场景 第二步. 找到引起错误的原因 第1步. 查看windows日志文件. 运行中输入 eventvwr (event viewer)打开日志文件查看器, 第三步. 解决方案,由第 ...

  2. 一步一步学python(七) - 更加抽象

    1.面向对象 面向对象程序设计中的术语对象基本上可以看做数据以及由一系列可以存取这些数据方法所组成的集合. 2.多态 对不同的类的对象使用同样的操作 2.1 多态和方法 程序得到了对象可能有多种形状, ...

  3. Zigbee、WiFi和433MHz无线技术各有特点

    Zigbee.WiFi和433MHz无线技术都属于近距离无线通讯技术,并且都使用ISM免执照频段,但它们各具特点.   ZigBee的特点是低功耗.高可靠性.强抗干扰性,布网容易,通过无线中继器可以非 ...

  4. sa命令从/var/account/pacct原始记账数据文件读取信息并汇总

    sa命令从/var/account/pacct原始记账数据文件读取信息并汇总

  5. Linux进程间通信——使用命名管道

    在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程 ...

  6. codevs1166 矩阵取数游戏

    题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均 为非负整数.游戏规则如下: 1. 每次取数时须从每行各取走一个 ...

  7. java 基础知识

    ...是Java代码的一部分,表明可以接受任意数量的对象,例子如下: 感觉很有趣 public static double max(double... values){ double largest ...

  8. 使用xmanager 远程redhat6.3

    之前装过一次,特别麻烦,装上只有远程还卡卡的,这次按照教程居然装的灰常顺利,不符合我bug体质的特性,一定要记下来啊~~~ 1.先关闭防火墙 # service iptables stop #chkc ...

  9. 基于winform的二进制图片数据的存取(用于数据库照片的读写处理)

    编程目的:文本框1中输入id号,则从openFileDialog中选择的图片会以二进制数据存进SQL数据库的对应表的id列:文本框2中输入姓名,从数据库读取对应name的照片并显示在pictureBo ...

  10. 无组件客户端js图片压缩

    <div class="free-upload"> <p>上传您的约会照片,一张合影.一张票据哦!</p> <div class=&quo ...