回 帖 发 新 帖 刷新版面

主题:[原创]如何理解求1+2+3....+100的和这道程序??

求1+2+3+...+100的和的程序,结果得到4950如何来了解它是怎么得来的。

还有下面两个修改后更是看不懂了,不知所以,求各位仁兄指教.
#include <stdio h>
void main()
{
   int i ,sum=0;
   for(i=1,i<100;i++)
   {
      sum=sum+i;
   }
   printf ("sum=%d\n",sum);
}

程序运行结果:4950


修改:1、将for(i=1;i<100;i++)中的100改为50,
          结果为:1225
      2、将for(i=1;i<100;i++)中的i++改为i=i+2
          结果为:2500

答案都正确,无论书上如何来说就是看不懂,不知可否一一讲解下。

回复列表 (共4个回复)

沙发

你的答案是错的吧,高斯定理(1+100)*100/2=5050
你的循环部分错了
for(i=1;i<101;i++)
你的程序只做到了1加到99而已

板凳


#include <stdio h>
void main()
{
   int i ,sum=0;
   for(i=1,i<100;i++)   //for循环
   {
      sum=sum+i;         //这里先是i=1,sum=0+1,再进入循环i=2,sum=1+2,再进入 循环,此时i=3,sum=3,所以sum=sum+i=3+3 (即sum=1+2+3),如此继续下去,一直到sum=sum+99
   }
   printf ("sum=%d\n",sum);
}

3 楼

[quote]你的答案是错的吧,高斯定理(1+100)*100/2=5050
你的循环部分错了
for(i=1;i<101;i++)
你的程序只做到了1加到99而已[/quote]

没错,是循环体错了。参考答案如下:
#include<stdio.h>
int main()
{
  int i,sum=0;
  for(i=1;i<=100;i++)
    sum+=i;
  printf("Sum = %d\n",sum);
}

4 楼

他想像我当时学编程那样,想了解里面的每一行代码的意思.建议先学习单步运行来观看代码.

我来回复

您尚未登录,请登录后再回复。点此登录或注册