#11

yyqd20132013-05-10 00:25

大致如下:

#include

#include

#include

typedef struct

{

long long int   molecular;

long long int   denominator;

}FRACTION;

int change_to_proper_fraction(FRACTION *fraction);

void fraction_add(FRACTION *frac_sum, FRACTION *frac_num);

main()

{

FRACTION frac[4];

int ret = 0;

long long int quo = 0;

frac[0].molecular = 1;

frac[0].denominator = 2;

frac[1].molecular = 1;

frac[1].denominator = 3;

frac[2].molecular = 1;

frac[2].denominator = 6;

frac[3].molecular = 0;

frac[3].denominator = 0;

if (change_to_proper_fraction(&frac[0])<0 || change_to_proper_fraction(&frac[1])<0

|| change_to_proper_fraction(&frac[2])<0)

{

printf("please check the fraction[3]!!!\n");

}

else

{

fraction_add(&frac[3], &frac[0]);

fraction_add(&frac[3], &frac[1]);

fraction_add(&frac[3], &frac[2]);

if (frac[3].molecular%frac[3].denominator == 0)

{

printf("%lld/%lld+%lld/%lld+%lld/%lld=%lld\n", frac[0].molecular, frac[0].denominator,

frac[1].molecular, frac[1].denominator, frac[2].molecular, frac[2].denominator, frac[3].molecular/frac[3].denominator);

}

else

{

printf("%lld/%lld+%lld/%lld+%lld/%lld=%lld/%lld\n", frac[0].molecular, frac[0].denominator,

frac[1].molecular, frac[1].denominator, frac[2].molecular, frac[2].denominator, frac[3].molecular, frac[3].denominator);

}

}

exit(1);

}

int change_to_proper_fraction(FRACTION *fraction)

{

if (fraction->denominator == 0)

return -1;

if (fraction->molecular == 0)

{

fraction->denominator = 0;

return 0;

}

if ((fraction->molecular%fraction->denominator) == 0)

{

fraction->molecular = fraction->molecular/fraction->denominator;

fraction->denominator = 1;

return 0;

}

long long int diff = 0;

long long int larger = 0;

long long int smaller = 0;

long long int mole_posi = 0;

long long int deno_posi = 0;

mole_posi = fraction->molecular > 0 ? fraction->molecular : (0 - fraction->molecular);

deno_posi = fraction->denominator > 0 ? fraction->denominator : (0 - fraction->denominator);

smaller = mole_posi

diff = deno_posi + mole_posi - 2 * smaller;

larger = diff>smaller ? diff : smaller;

smaller = diff + smaller - larger;

while (larger%smaller != 0)

{

diff = larger - smaller;

larger = diff>smaller ? diff : smaller;

smaller = diff + smaller - larger;

}

fraction->molecular = fraction->molecular/smaller;

fraction->denominator  = fraction->denominator/smaller;

return 0;

}

void fraction_add(FRACTION *frac_sum, FRACTION *frac_num)

{

if (frac_sum->molecular == 0)

{

frac_sum->molecular = frac_num->molecular;

frac_sum->denominator  = frac_num->denominator;

return;

}

else if (frac_num->molecular == 0)

{

return;

}

else

{

frac_sum->molecular = frac_sum->molecular*frac_num->denominator + frac_num->molecular*frac_sum->denominator;

frac_sum->denominator = frac_sum->denominator * frac_num->denominator;

change_to_proper_fraction(frac_sum);

return;

}

}

[本帖最后由 yyqd2013 于 2013-5-10 00:30 编辑]

在C语言中 分数用什么字符输出,C语言 如何输出一个分数?相关推荐

  1. c语言中字符串数组应用,C语言中字符变量字符串和字符数组应用.doc

    C语言中字符变量字符串和字符数组应用 字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错 ...

  2. c语言中宏定义的字符替换#define M(x,y,z) x*y+z

    C语言中宏定义的字符替换问题 例子: 在c语言中定义如下宏 #define M(x,y,z) x*y+z 给定如下程序 #include<stdio.h> #include<stdl ...

  3. c语言中存贮班级学生的变量,C语言----变量教案.docx

    C语言----变量教案 课 题 2.2 常量和变量----变量 课型 理实一体化 授课班级 高二计算机(升学班) 课时 2 教学目标 复习巩固C语言中常量的应用: 掌握C语言中变量的命名规则及应用. ...

  4. 在c语言中 使用变量的要求,关于C语言中变量的探讨

    摘 要: 在所有的计算机高级语言中,都存在着变量这样一个重要的概念.变量是计算机高级语言程序的重要成分之一.与其他语言中的变量相比,C语言中的变量所包含的内容更为丰富,包括变量的定义.数据类型.变量数 ...

  5. 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析

    之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...

  6. 在c语言中 不可表示的字符是什么,C 语言易错点综合

    C语言原则:一切工作自己负责. C语言哲学:语言中的任何部分都不应该通过隐藏的运行程序来实现. 1.当执行一个运算时,如果它的一个运算符是有符号的,而另一个运算符是无符号的,那么C语言会隐式地将有符号 ...

  7. c语言中定义字母二维数组,C语言中二维字符数组

    C语言中二维字符数组的定义和初始化 一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来初始化它.比如说: Code: 1.char testcase[30][MAX_LENG ...

  8. c语言中的无符号字符指什么,深入分析C语言中的有符号和无符号

    有符号和无符号指的是数字那么有符号和无符号的区别是什么,我们这里一起来看在C语言中的有符号和无符号分析吧,希望这篇文章能够对各位有用. 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我 ...

  9. asin c语言中 返回值范围_大学C语言考试易错知识点总结

    作者:cggwz 来源:https://blog.csdn.net/cggwz/article/details/103740713?utm_medium=distribute.pc_relevant. ...

  10. c语言中的目标程序的正确含义,C语言程序设计练习题整理要点.doc

    第1章 C语言初步 一.选择题: C 语言是在( )语言的基础上产生的. A. A B. B C. D D. E 在 C 语言中,每个语句必须以( )结束. A. 回车符 B. 冒号 C. 逗号 D. ...

最新文章

  1. Reboot与init 6的区别
  2. zabbix磁盘的自动发现与磁盘指标监控
  3. python 网页自动化框架_python+selenium自动化框架
  4. UITableView 编辑和删除行
  5. c语言浮点型常量表示平均数_数据类型与常量、变量解析
  6. Office2021中文零售版的离线安装包下载地址合集
  7. MultipartFile接口实现文件上传
  8. 系统内核快速编译并替换的方法
  9. Keras入门——(1)全连接神经网络FCN
  10. [Java][Android] 多线程同步-主线程等待所有子线程完成案例
  11. hpbios刷新工具_刷新:不会破产的工具
  12. wooyun 历史资源汇总
  13. matlab求解常微分方程组——dsolve与ode45
  14. 机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码)
  15. 一场对爱情的反思《少有人走的路:心智成熟的旅程》
  16. Mac终端输出重定向到剪切板
  17. 被遗忘的数学家!曾提出最接地气的数学定理,可以计算男朋友真不真心的那种......
  18. 光学瞄准镜测距之数学原理
  19. 阿里建站——通过阿里云平台搭建网站(阿里云+云市场+手动)
  20. 启动Vue项目发生的错误总结

热门文章

  1. windows XP 在关机菜单中添加 休眠按钮
  2. fft函数图像横坐标是什么_Matlab 对于fft作图 横坐标问题
  3. 『爬虫四步走』手把手教你使用 Python 抓取并存储网页数据!
  4. spring boot实现发送邮件以及群发邮件
  5. 三种项目成本估算方法
  6. 给1万帧视频做目标分割,显存占用还不到1.4GB,代码已开源 | ECCV 2022
  7. 外国开发者都知道的Android-筑基导论,作为一个Android程序员
  8. 2022 auto.js实现淘宝双十一活动自动完成 解放双手(简单版)
  9. 计算机三级网络技术知识点总结
  10. Native memory allocation (mmap) failed to map 142606336 bytes for committing reserved memory.