标签:
本题要求编写程序,计算N个有理数的平均值。
输入格式:
输入第1行给出正整数N(<=100);第2行中按照“a1/b1 a2/b2 ……”的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。
输出格式:
在一行中按照“a/b”的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:4 1/2 1/6 3/6 -5/10输出样例1:
1/6输入样例2:
2 4/3 2/3输出样例2:
1
1 #include<stdio.h> 2 #include<math.h> 3 #include<stdlib.h> 4 #include<string.h> 5 int main() 6 { 7 struct rational 8 { 9 int a; 10 int b; 11 }; 12 rational x, r[110]; 13 int i, n; 14 scanf("%d", &n); 15 for(i = 0; i < n; i++) 16 { 17 scanf("%d/%d", &r[i].a, &r[i].b); 18 } 19 x.a = 0; 20 x.b = 1; 21 for(i = 0; i < n; i++) 22 { 23 x.a = x.a * r[i].b + x.b * r[i].a; 24 x.b *= r[i].b; 25 } 26 x.b *= n; 27 int temp, h, l; 28 h = x.a > x.b ? x.a : x.b; 29 l = x.a < x.b ? x.a : x.b; 30 while(l) 31 { 32 temp = h % l; 33 h = l; 34 l = temp; 35 } 36 if(h != 0) 37 { 38 x.a /= h; 39 x.b /= h; 40 } 41 if(x.a == 0) 42 printf("%d\n", x.a); 43 else if(x.b == 1) 44 printf("%d\n", x.a); 45 else 46 printf("%d/%d\n", x.a, x.b); 47 return 0; 48 return 0; 49 }
标签:
原文地址:http://www.cnblogs.com/yomman/p/4248256.html