C语言菜鸟基础教程之求1到100的和
题目:求1+2+3+……+98+99+100
(1)用数学方法求解
(2)编写C语言程序求解
解:
(1)数学方法
S=1+2+3+……+98+99+100 =(1+100)+(2+99)+(3+98)+……+(49+52)+(50+51) =101*50 =5050
(2)C语言编程
#includeintmain() { intsum=0;//赋初值 for(inti=1;i<=100;i++) { sum=sum+i; } printf("totalis%d\n",sum); }
运行结果:
totalis5050
分析:
(1)第一次循环
i=1,sum=sum+i=0+1=1,这里右边的sum的值为初值0,将1赋给左边的sum后,sum的最新值变成了1
(2)第二次循环
i=2,sum=sum+i=1+2=3,这里右边的sum的值已经通过上一步的计算变成了1。把3赋值给左边的sum后,sum的最新值
就成了3
(3)第三次循环
i=3,sum=sum+i=3+3=6,这里右边的sum的值已经通过上一步的计算变成了3。把计算结果6赋值给左边的sum后,sum的最新值就成了6
(4)第四次循环
i=4,sum=sum+i=6+4=10,这里右边的sum的值已经通过上一步的计算变成了6。把计算结果10赋值给左边的sum后,sum的最新值就成了10
(5)……这样执行一百次后,得到的结果为5050
新知识点:
sum=sum+i可以写成sum+=i,都是让sum和i相加后,把新的值赋给sum。
以后编程尽量使用+=这种方式。
理由:C语言要通过编译器编译,在编译器没开启优化的情况下,两种写法是完全等价的;编译器开启了优化后,+=的执行速度可能会快一点。(这个先有点印象即可,目前不用深入了解)
作业:
(1)调试上面的程序。每次运行到右大括号时,把鼠标悬在sum上面,观察sum的值。
上面的程序会循环100次,调试的时候,循环10次左右就可以stepout了。
(2)
把sum=sum+i改成sum+=i,运行结果
#includeintmain() { intsum=0;//赋初值 for(inti=1;i<=100;i++) { sum+=i; } printf("totalis%d\n",sum); }
(3)在纸上默写这个程序。