float s1(float N1) ? ? ? ? ? ? ? ? ? //从大到小的计算顺序函数
{
?? ?float i,sum1 = 0;
?? ?for (i = 2 ;i <= N1 ; i++)
?? ?{
?? ??? ?sum1 += 1.0 / (i * i - 1);
?? ?}
?? ?return sum1; ? ? ? ? ? ? ? ? ? ? ?//函数返回值
}
float s2(float N2) ? ? ? ? ? ? ? ? ? //从小到大的计算顺序函数
{
?? ?float i,sum2 = 0;
?? ?for (i = N2;i >= 2; i--)
?? ?{
?? ??? ?sum2 += 1.0 / (i * i - 1);
?? ?}
?? ?return sum2; ? ? ? ? ? ? ? ? ? ? ? //函数返回值
}
int main()
{
?? ?cout << "请输入一个数:" << endl;
?? ?float n;
?? ?cin >> n;
?? ?cout << "从大到小顺序输出的结果是:" << s1(n) <<"\n" ? ? ? ? ?//输出计算从大到小的结果
?? ??? ?<< "从小到大顺序输出的结果是:"<<s2(n) << endl;?? ??? ? ? //输出计算从小到大的结果
?? ?return 0;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //程序结束
输出结果可以看到从大到小计算和从小到大计算结果的计算精度不一样,是因为计算机在计算时,从大数到小数计算的过程中会“吞并”小数,计算精度会有所下降,因此在精密计算过程中需要选用合适的计算顺序和算法
|