计算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值,打印出结果。

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语言的不熟练以及思维的不成熟,不知道如何用一个公式来表达每个位置数字而运用数学思维分中的情况讨论来表示这些数字,因此代码的繁杂程度也相应提高、不够精炼,需要加以改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值