当前位置: 代码迷 >> C语言 >> 新手求教!有关几个很短的循环的问题!
  详细解决方案

新手求教!有关几个很短的循环的问题!

热度:106   发布时间:2008-02-25 13:04:35.0
新手求教!有关几个很短的循环的问题!
(1)请看下面的一个程序段
int k,j,s;
for(k=2;k<6;k++,k++)  
{
s=1;
for(j=k;j<6;j++) s+=j;
}
printf("%d\n",s)
这个程序段输出的结果是___.(答案是10)
新手提问:这个程序中的第二行两个k++是什么意思呀?怎么运算啊?在这个循环体中怎么运算?
还有具体的流程是什么样子的?自己想了半天没有明白.不知道为什么答案是10,请各位师傅帮忙一下^_^
(2)还是上道题的一个扩展:
1.int k;
  for(k=2;k<6;k++,k++);
  printf("%d\n",k);
2.int k;
  for(k=2;k<6;k++,k++)
  printf("%d\n",k);
说明:1与2之间就差了一个第二行最后的";",可是答案却不同.1中的答案是6,2中的答案是2,4.
可是我不明白其中的区别?怎么运算的?为什么第一个是一个数字,第二个是两个?求教~
----------------解决方案--------------------------------------------------------
NO.1

int k,j,s;
for(k=2;k<6;k++,k++)  
{
s=1;
for(j=k;j<6;j++) s+=j;
}
printf("%d\n",s)

首先,这道题上面的不用看,只要看第二个for循环中的s=1,就知道外面的循环只有最后一次有效。而K被赋值为2,自加两次为4,不能再自加了,再加就不符合K<6的条件了。K此时为4。
然后S被赋为1。J=K=4,然后s+=j等同于s=s+j,所以此次循环S值为5;然后再循环,J=5,S=5;s+=j,值为10。
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]wcghappy[/un] 在 2008-2-25 13:04 的发言:[/bo]

2)还是上道题的一个扩展:
1.int k;
  for(k=2;k<6;k++,k++);
  printf("%d\n",k);
2.int k;
  for(k=2;k<6;k++,k++)
  printf("%d\n",k);
说明:1与2之间就差了一个第二行最后的";",可是答案却不同.

恕我眼神太差,没看出有什么不同的地方。


PS:呵呵,真是老了,眼睛跟不上趟了。经我仔细地瞅,终于瞅出来了,原来少了个“;”,呵呵。

[[it] 本帖最后由 广陵绝唱 于 2008-2-25 14:17 编辑 [/it]]
----------------解决方案--------------------------------------------------------
第一题/*这是一个逗号运算符结果为最后k++的值 */  /*先k++ 后再进行第二个 k++ 验算一下*/
第二题
(1)/*循环体为最靠近for 的 分号 循环结束当然是 6*/
(2)/*循环两次 2 4 第三次超过条件 */
----------------解决方案--------------------------------------------------------
1.int k;
  for(k=2;k<6;k++,k++);
  printf("%d\n",k);
2.int k;
  for(k=2;k<6;k++,k++)
  printf("%d\n",k);

我没看出这两个程度的第二行有什么不一样啊
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
FOR之后有个有“;”。

呵呵,跟我一样,很马虎
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-2-25 14:18 的发言:[/bo]

FOR之后有个有“;”。

呵呵,跟我一样,很马虎


啊...我终于发现了...一个分号耶...

因为for后面有分号,所以当k自增到6的时候才跳出循环...楼主明白了吗???

楼主去看看for循环的执行过程吧...书上应该有讲...或者跟踪调试下程序
----------------解决方案--------------------------------------------------------
谢谢各位好朋友,现在明白了~
----------------解决方案--------------------------------------------------------
  相关解决方案