分数计算器c++程序代码

时间: 2023-05-16 13:01:36 浏览: 91
分数计算器C是一种大家都常用的小型软件,主要功能是支持分数的四则运算和求最大公约数。以下是一份分数计算器C的程序代码: #include <stdio.h> #include <stdlib.h> // 分数结构体 typedef struct Fraction{ int numerator; // 分子 int denominator; // 分母 }Fraction; // 求最大公约数 int gcd(int a, int b){ return b == 0 ? a : gcd(b, a % b); } // 约分 Fraction reduce(Fraction f){ if(f.numerator == 0){ // 如果分子为0,分母置为1 f.denominator = 1; }else{ int d = gcd(abs(f.numerator), abs(f.denominator)); f.numerator /= d; f.denominator /= d; } return f; } // 加法 Fraction add(Fraction f1, Fraction f2){ Fraction sum; sum.numerator = f1.numerator * f2.denominator + f2.numerator * f1.denominator; sum.denominator = f1.denominator * f2.denominator; return reduce(sum); } // 减法 Fraction substract(Fraction f1, Fraction f2){ Fraction diff; diff.numerator = f1.numerator * f2.denominator - f2.numerator * f1.denominator; diff.denominator = f1.denominator * f2.denominator; return reduce(diff); } // 乘法 Fraction multiply(Fraction f1, Fraction f2){ Fraction product; product.numerator = f1.numerator * f2.numerator; product.denominator = f1.denominator * f2.denominator; return reduce(product); } // 除法 Fraction divide(Fraction f1, Fraction f2){ Fraction quotient; quotient.numerator = f1.numerator * f2.denominator; quotient.denominator = f1.denominator * f2.numerator; return reduce(quotient); } int main(){ Fraction f1 = {1, 2}; Fraction f2 = {2, 3}; // 加法 Fraction f3 = add(f1, f2); printf("%d/%d + %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f3.numerator, f3.denominator); // 减法 Fraction f4 = substract(f1, f2); printf("%d/%d - %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f4.numerator, f4.denominator); // 乘法 Fraction f5 = multiply(f1, f2); printf("%d/%d * %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f5.numerator, f5.denominator); // 除法 Fraction f6 = divide(f1, f2); printf("%d/%d ÷ %d/%d = %d/%d\n", f1.numerator, f1.denominator, f2.numerator, f2.denominator, f6.numerator, f6.denominator); return 0; } 以上是分数计算器C的程序代码,通过运行该程序可以实现分数的加减乘除运算,并且支持自动约分和求最大公约数功能。

相关推荐

高精度数的计算器一般使用字符串表示数字,然后模拟手工计算的过程进行计算。下面是一个简单的高精度数的加法算法代码示例(使用C语言实现): c #include <stdio.h> #include <string.h> #define MAXN 1005 int a[MAXN], b[MAXN], c[MAXN]; void reverse(char s[]) { int len = strlen(s); for (int i = 0; i < len / 2; i++) { char temp = s[i]; s[i] = s[len - 1 - i]; s[len - 1 - i] = temp; } } void str_to_int(char s[], int num[]) { reverse(s); int len = strlen(s); for (int i = 0; i < len; i++) { num[i] = s[i] - '0'; } } void int_to_str(int num[], char s[]) { int len = 0; for (int i = MAXN - 1; i >= 0; i--) { if (num[i] != 0) { len = i + 1; break; } } for (int i = 0; i < len; i++) { s[i] = num[len - 1 - i] + '0'; } s[len] = '\0'; reverse(s); } void add(int a[], int b[], int c[]) { int carry = 0; for (int i = 0; i < MAXN; i++) { c[i] = a[i] + b[i] + carry; carry = c[i] / 10; c[i] %= 10; } } int main() { char sa[MAXN], sb[MAXN]; scanf("%s%s", sa, sb); str_to_int(sa, a); str_to_int(sb, b); add(a, b, c); char sc[MAXN]; int_to_str(c, sc); printf("%s\n", sc); return 0; } 这个算法实现了两个字符串表示的数字的加法操作,其中 MAXN 是表示数字的最大位数,本示例中设置为1005,可以根据需要适当调整。 这个算法的实现过程比较简单,首先将字符串表示的数字转换成整型数组表示的数字,然后进行加法操作,最后将得到的结果转换回字符串表示的数字。

最新推荐

计算器C++版程序代码

计算器c++版程序代码简单易懂,非常适合一些初步接触、学习c++编程人。

python代码编写计算器小程序

主要为大家详细介绍了python代码编写计算器小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C++模拟计算器功能的程序

问题描述 设计一个模拟计算器功能的程序,它读入一个表达式,如果是一个正确的表达式(即它由操作数、圆括号和+、-、*、/四种运算符组成),则求出该表达式的值;否则给出某种错误信息。 基本要求:读入一个以字符...

设计一个程序来模拟一个简单的手持计算器

设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。 基本要求 程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式...

java计算器报告+代码

1、参照Windows计算器功能,实现加、减、乘、除运算; 2、声明为按钮数组; 3、对0~9数字操作,采用相同的算法; 4、解决除数为零的问题; 5、具有清除一个数字、全部清除、开平方和平方功能。 6、计算结果保留4位...

基于at89c51单片机的-智能开关设计毕业论文设计.doc

基于at89c51单片机的-智能开关设计毕业论文设计.doc

"蒙彼利埃大学与CNRS联合开发细胞内穿透载体用于靶向catphepsin D抑制剂"

由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供于2016年5月26日在评审团面前进行了辩护让·吉隆波尔多大学ARNA实验室CNRS- INSERM教授报告员塞巴斯蒂安·帕波特教授,CNRS-普瓦捷大学普瓦捷介质和材料化学研究所报告员帕斯卡尔·拉斯特洛教授,CNRS-审查员让·马丁内斯蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授审查员文森特·利索夫斯基蒙彼利埃大学Max Mousseron生物分子研究所CNRS教授论文主任让-弗朗索瓦·赫尔南德斯CNRS研究总监-蒙彼利埃大学Max Mousseron生物分子研究论文共同主任由蒙彼利埃大学提供用于靶向catphepsin D抑制剂的细胞内穿透载体的开发在和CNRS研究单位- UMR 5247(马克斯·穆塞隆生物分子研究专长:分子工程由Clément Sanchez提供�

设计一个程序有一个字符串包含n个字符 写一个函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 用指针c语言

以下是用指针实现将字符串中从第m个字符开始的全部字符复制成为另一个字符串的C语言程序: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> void copyString(char *a, char *b, int n, int m); int main() { int n, m; char *a, *b; printf("请输入字符串长度n:"); scanf("%d", &n); a = (char*)malloc(n * sizeof(char)); b =

基于C#多机联合绘图软件的实现-毕业设计论文.doc

基于C#多机联合绘图软件的实现-毕业设计论文.doc

4G车载网络中无线电资源的智能管理

4G车载网络中无线电资源的智能管理汽车网络从4G到5G的5G智能无线电资源管理巴黎萨克雷大学博士论文第580号博士学院博士专业:网络、信息与通信研究单位:巴黎萨克雷大学,UVSQ,LI PARAD,78180,法国伊夫林省圣昆廷参考:凡尔赛大学-伊夫林省圣昆廷论文于11月30日在巴黎萨克雷发表并答辩2021年,由玛丽亚姆·阿卢奇·马迪陪审团组成Pascal Lorenz总裁上阿尔萨斯大学大学教授Mohamed Yacine Ghamri-Doudane拉罗谢尔大学报告员和审查员教授Rami Langar报告员和审查员马恩河谷大学Oyunchimeg SHAGDARVEDECOM研发(HDR)团队负责人审查员论文方向Samir TOHME博士生导师巴黎萨克雷大学名誉教授UVSQ/LI- PARADKALLEL KHEMIRI共同监督巴黎萨克雷UVSQ/大卫Guy Pujolle受邀索邦大学Tara Yahiya邀请巴黎萨克雷大学/LISN高级讲师(HDR)博士论文NNT:2021UPASG061谢谢你首先,我要感谢我的论文导师M.萨米�