PAT考试乙级1034(C语言实现)重点题目
来源:互联网 发布:如何举报淘宝违规销售 编辑:程序博客网 时间:2024/05/16 14:00
#include <stdio.h>long long GCD(long long a, long long b) { //求最大公约数 long long m = a%b; while(m) { a=b; b=m; m=a%b; } return b; } void printFraction(long long a, long long b){//分数形式打印 long long k=1; long long gcd; if(b==0){ printf("Inf"); return; } if(a<0){ a=-a; k=-1; } gcd = GCD(a,b); a=a/gcd; b=b/gcd; if(a/b==0&&a!=0){//真分数 if(k > 0) //一开始写的时候少了这个判断导致两个测试点错误(题目给的测试点通过) printf("%lld/%lld", a, b); else printf("(-%lld/%lld)", a, b); return; } k=k*a/b;//假分数 a=a%b; if(b == 1 && k < 0) printf("(%lld)", k); else if(b == 1 && k >= 0) //分子为0,或者分母为1,结果都是整数,直接输出分子部分(不输出分母) printf("%lld", k); else if(k < 0) printf("(%lld %lld/%lld)", k, a, b); else printf("%lld %lld/%lld", k, a, b);}void Print(long long a1, long long b1, long long a2, long long b2, char ch) { //输出一个表达式 long long n1,n2; printFraction(a1,b1); printf(" %c ",ch); printFraction(a2,b2); printf(" = "); switch(ch){ case '+': n1=a1*b2+a2*b1; n2=b1*b2; printFraction(n1,n2); printf("\n"); break; case '-': n1=a1*b2-a2*b1; n2=b1*b2; printFraction(n1,n2); printf("\n"); break; case '*': n1=a1*a2; n2=b1*b2; printFraction(n1,n2); printf("\n"); break; case '/': n1=a1*b2; n2=b1*a2; if(n2<0){ n1=-n1; n2=-n2; } printFraction(n1,n2); printf("\n"); break; }}int main(){ long long a1,b1,a2,b2; scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2); Print(a1, b1, a2, b2, '+'); Print(a1, b1, a2, b2, '-'); Print(a1, b1, a2, b2, '*'); Print(a1, b1, a2, b2, '/'); return 0;}
代码参考:http://blog.csdn.net/wanmeiwushang/article/details/51629000
总结:
1、题目相对来说有点难,主要是把思路理清楚,很多重复的东西最好写成函数来调用。
2、第一个细节是题目要求输入有理数,虽然给的测试点看起来都是int类型但是一定要用long long类型。
3、第二个细节是在输出时,如果第二个数字为负数(即a2为负数)时,输出一定要加括号,结果也是。由于题目给的两个测试点都是正数,所有一开始忽略了这个问题。
阅读全文
0 0
- PAT考试乙级1034(C语言实现)重点题目
- PAT考试乙级1015(C语言实现) 重点题目
- PAT考试乙级1019(C语言实现) 重点题目
- PAT考试乙级1024(C语言实现)重点题目
- PAT考试乙级1028(C语言实现)重点题目
- PAT考试乙级1030(C语言实现)重点题目
- PAT考试乙级1031(C语言实现)重点题目
- PAT考试乙级1033(C语言实现)重点题目 部分正确(已解决)
- PAT考试乙级1035(C语言实现)重点题目(排序)
- PAT考试乙级1045(C语言实现)重点题目(思路)
- PAT考试乙级1048(C语言实现)重点题目(思路、用到了memset)
- PAT考试乙级1050(C语言实现) (重点题目)(memset以及思路)
- PAT考试乙级1050(C语言实现) (重点题目)(关于保留小数的坑)
- PAT考试乙级1054(C语言实现) (重点题目)(思路)
- PAT考试乙级1050(C语言实现) (重点题目)(按格式读取,使用容器vector)
- PAT考试乙级1055(C++语言实现) (重点题目)(思路)
- PAT考试乙级1001(C语言实现)
- PAT考试乙级1002(C语言实现)
- 《算法》——第一章:基础
- Apache源代码编译安装
- markdown文件生成HTML
- 今天实现二叉树的时候遇到了一个很有意思的问题
- JS中创建对象的几种方式
- PAT考试乙级1034(C语言实现)重点题目
- tomcat配置(从内存、并发、缓存4个方面)优化
- 使用Spring MVC 实现文件上传遇到的问题以及解决方案
- Qt 主窗口点击按钮 弹出另一个自定义窗口
- 欢迎使用CSDN-markdown编辑器
- 用construct2做屬於自己的小遊戲2
- js和servlet实现文件上传
- nginx的spinlock的学习
- springmvc配置文件:web.xml