检查如下c语言指出错误并改正:#include<stdio.h> int main() { int n; scanf("%d",&n); int sum_a = 0,sum_b = 1; for(int i = 0;i < n;i++) { int a,b; scanf("%d/%d",&a,&b); simplify(&a,&b); sum_a = sum_a*b+sum_b*a; sum_b *= b; simplify(&a,&b); } if(sum_b == 1) { printf("%d\n",sum_a); } else printf("%d/%d\n",sum_a,sum_b); return 0; }
时间: 2023-06-25 12:04:00 浏览: 112
修改后的代码如下:
```
#include <stdio.h>
void simplify(int *a, int *b) {
int max = (*a > *b) ? *a : *b;
for (int i = 2; i <= max; i++) {
if (*a % i == 0 && *b % i == 0) {
*a /= i;
*b /= i;
max /= i;
i--;
}
}
}
int main() {
int n;
scanf("%d", &n);
int sum_a = 0, sum_b = 1;
for (int i = 0; i < n; i++) {
int a, b;
scanf("%d/%d", &a, &b);
simplify(&a, &b);
sum_a = sum_a * b + sum_b * a;
sum_b *= b;
simplify(&sum_a, &sum_b);
}
if (sum_b == 1) {
printf("%d\n", sum_a);
} else {
printf("%d/%d\n", sum_a, sum_b);
}
return 0;
}
```
修改说明:
1. 在代码开头添加了 `simplify` 函数的声明,避免编译器警告。
2. 添加了 `simplify` 函数,用于化简分数。
3. 在累加前先将读入的分数化简。
4. 在累加后将结果化简。
阅读全文