c语言的一个循环问题

求2+22+222+……一共加N个2,为何是#include"stdio.h"voidmain(){inti=0,p=0,sn=0;//注意p和sn的初值for(i=1;... 求2+22+222+……一共加N个2,为何是
#include "stdio.h"
void main()
{
int i = 0, p = 0, sn = 0; // 注意p和sn的初值

for(i = 1; i < 9; ++i) // 这里的i变成了项数,不要太多,以免结果超出结果范围
{
p = p * 10 + 2;
sn += p;
}
printf("sn=%d\n", sn);
}
为何说那里i是项数?
整个程序我也不明白,高分求解释~
越详细越好。上面程序写错了。。应该是这样:
#include<stdio.h>
int main()
{
int n,i,term=0,sum=0;
printf("计算2+22+222+……最后一项有n个2,n由键盘输入:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
term=term*10+2;
sum=sum+term;
}
printf("结果是%d\n",sum);
}
return 0;
}
求解释真个程序,重点
for(i=1;i<=n;i++)
{
term=term*10+2;
sum=sum+term;
请问是如何增加的?for中并无term的运算式。
展开
 我来答
chan326
2012-03-08
知道答主
回答量:18
采纳率:0%
帮助的人:21.8万
展开全部
程序说的很明白,这里的“ i ”确实是项数,表示的是2+22+222+……这个多项式的项的个数,比如:这个多项式为2+22+222+2222,则项数 i =4;变量term的值表示的是当前一项的值,
当i=1时,即此多项式只有一项也就是2,由于term的初值是0,所以此时term=0*10+2=2;sum+=term 即表示
sum=sum+term;此时sum = 2,它其实就是起一个累加的作用
当 i =2时,此多项式有两项,也就是2+22;经过前一次循环,此时变量term的值已经变成了2,此时再将term的值代入到term =term *10+2中去,可求的当前一项 的值为22,即term =22;由前一次循环可知道sum=2,即此时sum+=term 即为sum=sum+term=2+22;
当 i =3 时,。。。
之后的一次类推,整个程序就是一个循环累加,别的就没什么了。
不知道我这样分析是不是说清楚了,但愿对你有帮助
hu501960879
2012-03-08 · 超过13用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:33.1万
展开全部
你好
for(i=1;i<=n;i++)//一共n项 这里循环了n次。
{
term=term*10+2;// 第一次循环term开始等于0,第一下循环完term=2,第二次循term=2 (第一次循环后term的结果)*10+2=22,第三次等于222,第四次等于2222,第n次等于22222.....共n项
sum=sum+term;//第一次循环sum=0+2,第二次循环sum=22+2,.............
现在你能听懂吗 不懂在问我 希望我的回答对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记得我不会说谎
2012-03-07 · 超过14用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:37万
展开全部
循环执行了几次就是几项,最后的项数为 i - 1

当你改了之后,项数就直接为 n 了

请问是如何增加的?for中并无term的运算式。
这句话听不太懂
term=term*10+2;就是term的运算式咯、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友574fe3d
2012-03-07
知道答主
回答量:29
采纳率:0%
帮助的人:18.9万
展开全部
i 却是可以认为是项数,p的值为当前项的值,sn为各项的和的值。程序中的i=0,才对。首先要进行8次循环,每次循环都得到对应项的值:p=p*10+2;(有规律的,没后一项为前一项的值的10倍,再加上2)。sn的值为每次的到的对应项的值p的 各项的累加值。
如:i=0时,p= 0*10 +2=2; sn=0+p=2;
i=1时,p=2*10+2=22;sn=sn+p=2+22;
以此类推就会得到结果!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
若爱如梦
2012-03-08 · TA获得超过129个赞
知道答主
回答量:64
采纳率:100%
帮助的人:23.8万
展开全部
呵呵,并不是只能在for中的表达式才能自加的,for里面的循环体不是有term=term*10+2;
的语句吗,这就使得temp的值在改变了, sum=sum+term;
就不解释了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-08
展开全部
采用多层嵌入程序就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式