作业帮 > 综合 > 作业

C语言问题怎样理解{for(s=0,n=1;s

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/13 01:56:52
C语言问题怎样理解
{
for(s=0,n=1;s
C语言问题怎样理解{for(s=0,n=1;s
累加问题
其实你那花括号不对应啊,这是套在一个循环里的吗?我需要源程序,不然结果会差很多
再问: 1+2+....+n<m,输入一个数m求令不等式成立的最大值n,并将1+2+....+n的值赋给s 括号忘打了...
再答: 以前100个数之和5050的这个例子来看的话,或许能让你更好地理解你原来的程序,呵呵~
for(s=0,n=1;s<m;n++)
 {
  s=s+n;
 }//这里是求前n的和应该没问题吧
 n=n-1;/*以我那5050为例,跳出循环来的s只要做到前100就行了,于是乎,下面那行就得减掉那个100*/
 s=s-n;
 n=n-1;/*至于这里嘛,我们输入的n得要再减1才能是现在的当前最小数呵~*/
 if(m==0||m==1)s=0,n=0; 于是乎,你的程序就出来了:
再问: 可以的话解释一下第一个n=n-1这个还是有些不理解
再答: 其实第一个n=n-1 是为了和下面一行的s=s-n而设定的,你可以换个思路来理
请问s的值应该是多少?
我们还是以我那个5050为例好了,求和的时候跳出的条件应该是s>=m对吗?
那么此时跳出的n是多少?
(连着上面的n=99来分析:
s=s+99;
n=100;
s=4950不是大于等于5050

所以才会又要做一次,那么此时:
s=s+100;
n=101;
s=5050;
然后再到for()循环的最后一个n++;(这里一定要注意了),
也就是说此时跳出循环里的各个值是这样的:
s=5050;
n=102;)
然后你想啊,做循环外的n=n-1就是为了把刚才跳出来的(上面我说要注意的那个n++)自给去掉,因为跳出的值在判断之前又被加了一次,确没加到s里去,所以你说是不是应该要减掉呢?

这么分析,那第一个n=n-1可以理解了吗?

简单点说就是,只有减了1才是我们求和里的最后一个数。

//反正也到最后一步了,我接着把这个程序的最后一步也说一下吧~
此时,执行了去掉自加的那个没用到的n变化的+1,才变成了我们要求的s

用同样的思路来解释,因为我们要做的是s