1、这里分别列出个人对此问题的解决办法(法一)与 他人对此代码的解决办法(法二)
a、个人思路:分别计算奇数位置总和与偶数位置总和的值(奇数位和:m1,偶数位和:m),二者在相减(最终结果:sum=m-m1)。
代码如下(法一):
#include <stdio.h>int main()
{
double i = 0;
double m = 0;
double n = 0;
double a = 0;
double m1 = 0;
double n1 = 0;
double sum = 0;
for (i = 1; i <= 100; i = i + 2)
{
n = 1 / i; //n用来存储该循环每次1/i的值(存储循环状态量)
m = m + n; //m用来存储每次1/i(n)相加后的值(存储循环过程量)
}
for (a = 2; a <= 100; a = a + 2)
{
n1 = 1 / a; //n1用来存储该循环每次1/i的值(存储循环状态量)
m1 = m1 + n1; //m1用来存储每次1/a(n1)相加后的值(存储循环过程量)
}
sum = -m1 + m; // sum=m-m1
printf("%lf", sum);
return 0;
}
b、个人对此代码理解:添加变量flag可以解决偶数位置为负数的情况,sum(存储循环相加后的过程量)
代码如下(法二):
#include<stdio.h>
int main()
{
int i = 0;
double sum = 0;
int flag = 1;
for(i=1;i<=100;i++)
{
sum+=flag*1.0/i ;
flag = - flag;
}
printf("%lf\n",sum);
return 0 ;
}
c、法一(优点与缺点):
(1)缺点:相比于法二设置变量过多,过于繁杂、不够简洁高效。
(2)优点:相比法二更易理解和计算。
d、个人总结:
由于个人对c语言的不熟练以及思维的不成熟,不知道如何用一个公式来表达每个位置数字而运用数学思维分中的情况讨论来表示这些数字,因此代码的繁杂程度也相应提高、不够精炼,需要加以改进。