#include<stdio.h> int gcd(int a,int b); // 辗转相除法返回最大公因数(输入存在为0则返回非0的输入,都为0则返回1) int main() { int N; int i; int upper = 0; // 分子 int lower = 1; // 分母 scanf("%d", &N); for( i=0; i<N; i++){ int a,b; scanf("%d/%d", &a, &b); // 模仿分数加法 upper = upper*b + a*lower; lower *= b; // 约分 int g = gcd(upper, lower); upper /= g; lower /= g; } // 整数部分与分数部分分离 int dig = upper / lower; // 整数部分 upper -= lower*dig; // 分数部分的分子 // 输出 if( dig ) printf("%d", dig); if( dig!=0 && upper!=0 ) printf(" "); // 整数分数都有需要用' '进行连接 else if( dig==0 && upper==0 ) printf("0"); // 结果为0时 if( upper ) printf("%d/%d", upper, lower); // 分数部分不为0时 return 0; } int gcd(int a, int b) { int ret = a + b; // 如果输入存在0保证返回另一个值 if( a!=0 && b!=0 ){ do{ ret = a % b; a = b; b = ret; } while( b!=0 ); ret = a; // 结束循环时a为最大公因子 } if( ret==0 ){ // 如果输入的两个数都为0则返回1 ret = 1; } return ret; }
c语言编程练习题:7-155 N个数求和
作者:yunjinqi
类别:编程
日期:2023-05-31 17:50:47
阅读:597 次
消耗积分:0 分
版权所有,转载本站文章请注明出处:云子量化, https://www.yunjinqi.top/article/280
最新文章
系统当前共有 404 篇文章