#include <stdio.h> #include <stdlib.h> int main() { int a,b,c,d,e,f,n,h=0; char s; scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d); if(s=='+'){ e=a*d+b*c; f=b*d; n=f; if(e==0) {printf("0"); return 0;} if(e<0) e=-e,h=1; if(f%e==0){ f=f/e; e=e/(f/n); } if(h==0) printf("%d/%d",e,f); else printf("-%d/%d",e,f); } if(s=='-'){ e=a*d-b*c; f=b*d; n=f; if(e==0) {printf("0"); return 0;} if(e<0) e=-e,h=1; if(f%e==0){ f=f/e; e=e/(f/n); } if(h==0) printf("%d/%d",e,f); else printf("-%d/%d",e,f); } return 0; }
时间: 2024-03-27 18:35:06 浏览: 62
这是一个 C 语言程序,实现了两个分数的加减法运算,并将结果以分数形式输出。程序的思路是先读取两个分数,然后根据输入的运算符进行相应的计算。计算过程中需要将分数化为通分后进行加减运算,最后再将结果化简为最简分数形式输出。
具体的实现过程可以参考代码注释:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int a,b,c,d,e,f,n,h=0;
char s;
// 读取两个分数和运算符
scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d);
if(s=='+'){ // 加法运算
e=a*d+b*c; // 分子相加
f=b*d; // 分母相乘
n=f; // 保存分母的值,后面用于化简分数
if(e==0) { // 如果结果为0,直接输出0
printf("0");
return 0;
}
if(e<0) e=-e,h=1; // 如果结果为负数,先将其转化为整数形式,并标记为负数
if(f%e==0){ // 如果分子能整除分母,直接化简分数
f=f/e;
e=e/(f/n);
}
if(h==0) printf("%d/%d",e,f); // 输出结果,如果是正数直接输出
else printf("-%d/%d",e,f); // 如果是负数,在前面加上负号“-”
}
if(s=='-'){ // 减法运算,与加法类似
e=a*d-b*c;
f=b*d;
n=f;
if(e==0) {
printf("0");
return 0;
}
if(e<0) e=-e,h=1;
if(f%e==0){
f=f/e;
e=e/(f/n);
}
if(h==0) printf("%d/%d",e,f);
else printf("-%d/%d",e,f);
}
return 0;
}
```
阅读全文