agp c语言课程,网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值...

本文介绍了一种用C语言实现高精度计算分数小数形式的方法,通过数组存储商和余数逐步除法,同时演示了如何处理无线电台RS信号报告的清晰度和强度。涉及内容包括浮点数精度处理、数组表示高精度除法和信号报告的解析。
摘要由CSDN通过智能技术生成

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

输出格式:

形如

0.xxxxxxxxx

的小数,小数点后最多200位。输出结束的时候要带着回车换行。

输入样例:

16/19

输出样例:

0.84210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789473684

时间限制:500ms内存限制:32000kb

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#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");

}

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

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第三周:结构:结构、类型定义、联合

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第6周:程序结构

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;期末考试编程题部分

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第8周:图形交互程序

8.2函数指针 8.2函数指针 #include #include void f(int i) { printf("void ...

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第七周:文件:文件访问、格式化输入输出、二进制输入输出

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第5周:链表&lowbar;1逆序输出的数列

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第5周:链表

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

网易云课堂&lowbar;C语言程序设计进阶&lowbar;第四周:ACL图形库

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

随机推荐

举例讲解Linux系统下Python调用系统Shell的方法

有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法:1. os 模块 ...

Python多个版本安装!

Python可以同时安装多个版本,目前我安装的是3.6和3.5,在Eclipse中使用3.6:在Visual Studio中使用3.5.如何让哪个版本的Python成为系统默认的解释器呢?通过调整不同 ...

夏令营讲课内容整理 Day 3&period;

本日主要内容是树与图.   1.树 树的性质 树的遍历 树的LCA 树上前缀和   树的基本性质: 对于一棵有n个节点的树,必定有n-1条边.任意两个点之间的路径是唯一确定的.   回到题目上,如果题 ...

&lbrack;学习笔记&rsqb;Javascript采用二进制浮点数和四舍五入的错误

1.样例 var a = .3 - .2 //0.09999999999999998 var b = .2 - .1 //0.1 a == b //false 出现这样的原因在于 1.Javascri ...

koa中接收前台传递的各种数据类型的方式

标签(空格分隔): koa 数据类型接收 主要介绍三种会用到的中间件,其实都是自己在开发的过程中踩过的坑 首先介绍koa-body [详情介绍 https://github.com/dlau/koa- ...

linux查找文件或目录命令

inux查找文件或目录命令,前提:知道文件或者目录的具体名字,例如:sphinx.conf find 查找  find / -name dirname  查找目录 find -name filenam ...

js让程序暂停运行的方法

//自己写的暂停毫秒数的函数 function pauseTime(millTime) { var start=Date.now(); while(true){ var nowTime=Date.no ...

linux 安装unrar

Centos 6 32位下安装 wget http://pkgs.repoforge.org/unrar/unrar-4.2.3-1.el6.rf.i686.rpmrpm -ivh unrar-4.2 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值