武汉科技大学ACM :1007: 华科版C语言程序设计教程(第二版)习题5.7
Problem Description
这天老师给小豪出了一道很简单题目放松:输入一个分数,让你求出它们的最简分数。
Input
第一行包括一个T,表示测试数据的组数。
接下来T行每行包括一个分数。(分子分母均在int范围内)
Output
对于每个测试样例,输出一行其最简分数。
Sample Input
3 2/6 3/1 11/36
Sample Output
1/3 3/1 11/36
我的代码:
1 #include <stdio.h> 2 process(int a ,int b)/*求最大公约数,以便约分的函数*/ 3 { 4 int c; 5 while(b!=0) 6 { 7 c=a%b; 8 a=b; 9 b=c; 10 } 11 return a; 12 } 13 14 void main() 15 { 16 int n,i,a,b,min; 17 scanf("%d",&n); 18 for(i=0;i<n;i++) 19 { 20 scanf("%d/%d",&a,&b); 21 min=process(a,b); 22 printf("%d/%d\n",a/min,b/min); 23 } 24 }
其他代码:
1 #include <iostream> 2 3 using namespace std; 4 int mgcd(int a,int b) 5 { 6 7 int t; 8 if(a<b) 9 { 10 11 t=a;a=b;b=t; 12 } 13 while(a%b) 14 { 15 t=b; 16 b=a%b; 17 a=t; 18 } 19 return b; 20 } 21 22 int main() 23 { 24 int a,b,t; 25 char ch; 26 int count=0; 27 int T; 28 cin>>T; 29 while(cin>>a>>ch>>b) 30 { 31 ++count; 32 t=mgcd(a,b); 33 a /= t; 34 b /= t; 35 cout<<a<<"/"<<b<<endl; 36 if(count==T) 37 { 38 break; 39 } 40 } 41 42 return 0; 43 }