这题让我思考了蛮多,首先,我对所谓,构思程序内容,代码实现其实不难,即编程应该化更多的时间构思和设计要写什么,而不是直接上手打代码,代码实现只是其中一个不那么至关重要的点;
其二,对题目本身应该增加关注,需要注意并分析数据大小,而非莽(我在这吃了大亏(逃))比如这题需关注到,如果使用将所有的数据通分或者说相乘得到分母的方法,极其不理智,因为,假如说有100个数,夸张的算的话100!(阶乘)很大的一个数(9.3326215443944152681699238856267e+157)而int远远不够,longlong亦然;(等等double也许可以?4.94065645841246544E-324 到 1.797693E+308)
其三,函数很有必要;
#include<stdio.h>
int gcd(int a,int b)
{
int rema;//remainder
while(b!=0)
{
rema=a%b;
a=b;
b=rema;
}
return a;
}
int main(void)
{
int n,i=0,a[105]={0},b[105]={0};
//intput and process figures;
scanf("%d",&n);
scanf("%d/%d",&a[i],&b[i]);
int nume=a[i],deno=b[i],div=0;
for(i=1;i<n;i++)
{
scanf("%d/%d",&a[i],&b[i]);
nume = nume * b[i] + a[i] * deno;
deno = b[i] * deno; //"numerator/denominator" is called a fraction, integer is relative;
div = gcd(nume,deno);
deno /= div,nume /= div;
}
if(nume%deno==0)printf("%d", nume/deno);
else
{
if(nume>deno){
printf("%d %d/%d",nume/deno, nume-nume/deno*deno, deno);
}
else printf("%d/%d", nume, deno);
}
//output
}
dylan_sjc
发布了6 篇原创文章 · 获赞 0 · 访问量 46
私信
关注