制作asp手机网站,长沙市天心区建设局网站,广州公司注册名字查询,公司宣传册ppt今天是PTA题库解法讲解的第二天#xff0c;今天我们要讲解N个数求和#xff0c;题目如下#xff1a; 要解决这个问题#xff0c;我们可以用C语言编写一个程序来处理和简化分数。程序的基本思路如下#xff1a;
1. 定义一个函数来计算两个数的最大公约数#xff08;GCD今天我们要讲解N个数求和题目如下 要解决这个问题我们可以用C语言编写一个程序来处理和简化分数。程序的基本思路如下
1. 定义一个函数来计算两个数的最大公约数GCD用于分数的简化。 2. 读取输入的N个分数每次读取两个整数作为分子和分母。 3. 定义两个变量来存储累加的分数的分子和分母。 4. 对每个输入的分数执行以下操作 a. 将其与累加分数相加即分子相加后存储分母相乘后存储。 b. 简化结果分数即用GCD函数求分子和分母的最大公约数然后分别除以该公约数。 5. 最后输出结果分数的最简形式如果有整数部分则分开输出。
#include stdio.h// 计算最大公约数
long long gcd(long long a, long long b) {return b 0 ? a : gcd(b, a % b);
}// 分数累加并简化
void add_fraction(long long a, long long b, long long *sum_numerator, long long *sum_denominator) {// a/b 是当前分数sum_numerator/sum_denominator 是累加的分数*sum_numerator *sum_numerator * b *sum_denominator * a;*sum_denominator * b;// 简化分数long long g gcd(*sum_numerator, *sum_denominator);*sum_numerator / g;*sum_denominator / g;
}int main() {int N;scanf(%d, N);long long sum_numerator 0; // 累加的分数的分子long long sum_denominator 1; // 累加的分数的分母for (int i 0; i N; i) {long long numerator, denominator;scanf(%lld/%lld, numerator, denominator);add_fraction(numerator, denominator, sum_numerator, sum_denominator);}// 输出结果if (sum_numerator % sum_denominator 0) {// 如果分子能整除分母则只输出整数部分printf(%lld\n, sum_numerator / sum_denominator);} else if (abs(sum_numerator) sum_denominator) {// 如果分子大于分母则输出整数部分和分数部分printf(%lld %lld/%lld\n, sum_numerator / sum_denominator, abs(sum_numerator) % sum_denominator, sum_denominator);} else {// 否则只输出分数部分printf(%lld/%lld\n, sum_numerator, sum_denominator);}return 0;
}
我们把在编译器上面运行样例
提交结果 本题通过今天的讲解到此为止~