C语言误差累加处理

计算下面个数之和,如果要求小数部分高精度,每执行一次除法会有一次误差累计,解决误差累加的方法就是将分子和分母求和,整体只执行一次除法

多个数辗转相除

#include<cstdio>
#include<algorithm>
using namespace std;
int sgcd(int a[],int x){
int r,b,i,k;
if(x==1)return a[0];
else{
sort(a,a+x);
for(i=1;i<x;i++){
b=a[0];
do{
r=a[i]%b;
a[i]=b;
b=r;
}while(r);
a[i-1]=a[i];
k=i;
}
return a[k-1];
}
}
int main(){
int x,a[15];
scanf(“%d”,&x);
for(int i=0;i<x;i++)scanf(“%d”,&a[i]);
printf(“%d”,sgcd(a,x));
}