錯誤記錄(一)

分數加減法

時間限制:3000 ms  |  內存限制:65535 KB
難度:2
描述
編寫一個C程序,實現兩個分數的加減法
輸入
輸入包含多行數據
每行數據是一個字符串,格式是"a/boc/d"。
其中a, b, c, d是一個0-9的整數。o是運算符"+"或者"-"。

數據以EOF結束
輸入數據保證合法
輸出
對於輸入數據的每一行輸出兩個分數的運算結果。
注意結果應符合書寫習慣,沒有多餘的符號、分子、分母,並且化簡至最簡分數
樣例輸入
1/8+3/8
1/4-1/2
1/3-1/3
樣例輸出
1/2
-1/4
0
#include<stdio.h>
int wing(int a,int b)
{
	return a%b?wing(b,a%b):b;
	//return !a%b?b:wing(b,a%b); wrong!!!!!
}
int main()
{
	int a,b,c,d;
	char w;
	while(scanf("%d/%d%c%d/%d",&a,&b,&w,&c,&d)!=EOF)
	{
		// if(w=='+')
		// 	 int p=a*d+c*b;
		// if(w=='-')
		// 	 int p=a*d-c*b;這樣會顯示p未定義
		int p;
		if(w=='+')
			  p=a*d+c*b;
		if(w=='-')
			 p=a*d-c*b;
		int q=b*d;
		int k;
		if(p==0)
		{
			printf("0\n");continue;
		}
		//if(!p%q)  錯誤寫法
		if(!(p%q))
		{
			printf("%d\n",p/q);continue;
		}
		if(p>0)
		{
			k=wing(q,p);
			printf("%d/%d\n",p/k,q/k);continue;
		}
		if(p<0)
		{
			k=wing(q,-p);
			printf("%d/%d\n",p/k,q/k);
		}	
	}
	return 0;	
}


發佈了83 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章