【以下回答由 GPT 生成】
#include stdio.h // 辗转相除法求最大公约数 int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } // 约分函数 void simplifyFraction(int* a, int* b) { int g = gcd(*a, *b); *a /= g; *b /= g; } int main() { int a, b; scanf(%d %d, a, b); simplifyFraction(a, b); if (a % b == 0) { // 如果是整数 printf(%d\n, a / b); } else if (a b) { // 如果是真分数 printf(%d/%d\n, a, b); } else { // 如果是假分数 int integerPart = a / b; int numerator = a % b; printf(%d+%d/%d\n, integerPart, numerator, b); } return 0; }
代码思路: 1. 定义一个辗转相除法的函数gcd,用于求解最大公约数。 2. 定义一个约分函数simplifyFraction,利用辗转相除法求解a和b的最大公约数,然后将a和b都除以最大公约数,完成约分。 3. 在main函数中,首先读取输入的a和b。 4. 调用约分函数simplifyFraction,对a和b进行约分。 5. 判断a/b的情况,分三种情况进行输出。 - 如果a/b能整除,说明是一个整数,直接输出a/b的商。 - 如果a/b小于1,说明是一个真分数,输出a/b。 - 其他情况下,a/b大于等于1,说明是一个假分数,将a/b分解为整数部分和真分数部分,输出即可。
【相关推荐】
Dec 9, 2023