PAT-乙级-1034. 有理数四则运算(20)
1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和、差、积、商。
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0。
输出格式:
分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分;若为负数,则须加括号;若除法分母为0,则输出“Inf”。题目保证正确的输出中没有超过整型范围的整数。
输入样例1:
2/3 -4/2
输出样例1:
2/3 + (-2) = (-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
输入样例2:
5/3 0/6
输出样例2:
1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf
pat乙级题统一思路:模拟题意。
这题我就不写了,代码来源://http://blog.csdn.net/plank_root/article/details/51330891
#include <stdio.h>
typedef struct frac_
{
long n, d, s;
} FC;
// 求最大公约数的函数
long gcd(long a, long b)
{
return b == ? a : gcd(b, a % b);
}
// 分数处理函数
FC hand(FC a)
{
if (a.n < )
{
a.s *= -; // 如果分子为负,将符号赋给符号变量,分子取正值
a.n *= -;
}
long tmp = gcd(a.n, a.d);
a.n /= tmp;
a.d /= tmp; // 约分
return a;
}
// 单个分数输出函数
void prt_fc(FC a)
{
if (a.d == )
printf("Inf"); // 如果分母为0,输出Inf
else
{
long i = a.n / a.d; // 提取整数部分
a.n = a.n % a.d; // 分数化为真分数
a = hand(a); // 约分
if (a.n == && i == ) printf(""); // 如果整数小数部分均为0,输出0
else
{
if (a.s == -) printf("(-"); // 如果符号为负,则添加括号和负号
if (i != ) printf("%ld", i);
if (i != && a.n != ) printf(" ");
if (a.n != ) printf("%ld/%ld", a.n, a.d);
if (a.s == -) printf(")");
}
}
}
// 算式输出函数
void prt_eq(FC a, FC b, char c, FC (*fig)(FC, FC))
{
prt_fc(a);
printf(" %c ", c);
prt_fc(b);
printf(" = ");
prt_fc(hand((*fig)(a, b)));
printf("\n");
}
// 计算函数,加减乘除
FC plus (FC a, FC b)
{
return (FC)
{
a.s*a.n*b.d + b.s*b.n*a.d, a.d*b.d,
};
}
FC sub (FC a, FC b)
{
return (FC)
{
a.s*a.n*b.d - b.s*b.n*a.d, a.d*b.d,
};
}
FC multi(FC a, FC b)
{
return (FC)
{
a.n*b.n, a.d*b.d, a.s*b.s
};
}
FC divis(FC a, FC b)
{
return (FC)
{
a.n*b.d, a.d*b.n, a.s*b.s
};
} int main()
{
FC a = {, , }, b = {, , }, (*fig[])(FC, FC) = {plus, sub, multi, divis};
char c[] = "+-*/";
scanf("%ld/%ld %ld/%ld", &a.n, &a.d, &b.n, &b.d); // 读取分数a、b
for (int i = ; i < ; i++)
prt_eq(hand(a), hand(b), c[i], fig[i]); // 将处理过的分数,计算符号,计算函数、传递给算式输出函数 return ;
}
PAT-乙级-1034. 有理数四则运算(20)的更多相关文章
- PAT乙级1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分 ...
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
- PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)
PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20) http://www.patest.cn/contests/pat-b-practise/1034 ...
- PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)
1034 有理数四则运算(20)(20 分)提问 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的 ...
- PAT(B) 1034 有理数四则运算(Java)
题目链接:1034 有理数四则运算 (20 point(s)) 题目描述 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数 ...
- PAT 1034. 有理数四则运算(20)
本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只 ...
- 1034 有理数四则运算 (20 分)C语言
题目描述 本题要求编写程序,计算2个有理数的和.差.积.商. 输入描述: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整 ...
- P 1034 有理数四则运算
转跳点:
- PAT1034 有理数四则运算 (20分)
1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...
随机推荐
- 每天一道LeetCode--326. Power of Three
Given an integer, write a function to determine if it is a power of three. Follow up:Could you do it ...
- github果然强大
github果然强大,在idea里写好,可以直接提交到github,在哪台电脑都可以看源码了,手机也可以看 https://github.com/gaojinhua
- Ubuntu Linux 分区简易教程
关于Linux系统下的“分区”问题,对于新手来说一直是很头疼的.我来简单写一下,它的“分区”方法,规则. 声明:我为了让没有接触过Linux系统的人,理解更加简单.所以在言语表述上不是很规范,专业.我 ...
- DOS批处理命令-引数取得
参数传递对程序来说,是一个很重要的事情,所以,获得传递的参数是很重要的,接下来,我们来探讨下获得传递的参数的N种方式. 1.%N 获得传递的第N个参数(N最大为9) 就是传递过去的参数原样值(并且忽 ...
- Swift中的循环语句
循环语句能够使程序代码重复执行.Swift编程语言支持4种循环构造类型:while.do while.for和for in.for和while循环是在执行循环体之前测试循环条件,而do while是在 ...
- ios开发:OC对象的内存分析
最近要开始准备找实习单位了,做做笔试题,看看各位大神的面试经历,发现自己要学习的东西真的还有很多,虽然也做过几个的项目,但是真正拿过笔试题一看,才发现自己对基础这方面的东西,确实有点忽视了,所以最近开 ...
- C++转到C#历程零基础知识(持续增加)
1.命名空间.类和源文件的关系:几个源文件用同一个命名空间时候,那么这几个源文件中的各个类之间的调用时可行的.他不会根据你的源文件分离而分开,因为最终编译后生成的是dll,这里来看你的几个源文件是没有 ...
- (转)IDG副总裁楼军:顶级VC青睐什么样的创业者
学习能力是创业者的第一能力 创业者首先要有格局观和很强的学习能力. 具体什么意思?比如说去年IDG投了一个做C2C平台的海淘项目,创始人之前其实是帮他爱人做海淘代购.他爱人是一个代购买手,赚得还不错, ...
- ArcSDE for oracle10g安装后post的时候出现错误
The Post Installation Setup can not locate required Oracle files in your path.Check your Oracle inst ...
- 【Winform】 无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”。
问题:将dotnet framework 4.0 切换到2.0时,编译没有问题,在运行时出现如下错误:System.InvalidCastException: 无法将类型为“System.Window ...