| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:新手求教!有关几个很短的循环的问题!
只看楼主 加入收藏
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
收藏
 问题点数:0 回复次数:7 
新手求教!有关几个很短的循环的问题!
(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.
可是我不明白其中的区别?怎么运算的?为什么第一个是一个数字,第二个是两个?求教~
2008-02-25 13:04
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
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。
2008-02-25 13:33
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
[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]]
2008-02-25 13:36
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
第一题/*这是一个逗号运算符结果为最后k++的值 */  /*先k++ 后再进行第二个 k++ 验算一下*/
第二题
(1)/*循环体为最靠近for 的 分号 循环结束当然是 6*/
(2)/*循环两次 2 4 第三次超过条件 */
2008-02-25 13:36
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
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);

我没看出这两个程度的第二行有什么不一样啊

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-02-25 14:14
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 5# 的帖子
FOR之后有个有“;”。

呵呵,跟我一样,很马虎
2008-02-25 14:18
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-2-25 14:18 的发言:[/bo]

FOR之后有个有“;”。

呵呵,跟我一样,很马虎


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

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

楼主去看看for循环的执行过程吧...书上应该有讲...或者跟踪调试下程序

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-02-25 17:14
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
收藏
得分:0 
谢谢各位好朋友,现在明白了~
2008-02-25 17:24
快速回复:新手求教!有关几个很短的循环的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018772 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved