| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:本人大学生刚解除C语言区求大神详细的解释下这个关于for语句的程序
只看楼主 加入收藏
guoxuyang
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
本人大学生刚解除C语言区求大神详细的解释下这个关于for语句的程序
#include<stdio.h>
main()
{int k,j,s;
for(k=2;k<6;k++,k++)
{
  s=1;
  for(j=k;j<6;j++)
      s=s+j;
}
printf("%d\n",s);
}
搜索更多相关主题的帖子: C语言 
2013-03-30 10:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
新手不怪你,但拜错师门就是你的错,拿这种代码出来求解答,写这个的人和希望弄清楚它的人都是脑子有病的。

授人以渔,不授人以鱼。
2013-03-30 10:03
guoxuyang
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-3-30
收藏
得分:0 
回复 2楼 TonyDeng
不好意思,因为我不是计算机专业的,但对C语言很感兴趣但又没有老师指点,如果问了些很弱智的问题,请版主见谅
2013-03-30 10:09
奔跑的萝卜
Rank: 2
等 级:论坛游民
帖 子:43
专家分:55
注 册:2013-3-18
收藏
得分:7 
这个代码是错误的。先看书吧
2013-03-30 10:12
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
#include<stdio.h>
main()
{int k,j,s;
for(k=2;k<6;k++,k++)   //for语句被分号分成三部分,1、循环控制变量的初值,2、循环控制变量的范围或者说终值,3、循环控制变量的递增
{                        你这个递增用了两个 k++ ,所以每次循环后,k 加 2,所以只能循环两次,第三次跳出循环
  s=1;                 //s=1 放在这里,所以每次循环后 s 又变回了原来的值 即 1
  for(j=k;j<6;j++)     //这是一个内循环,注意当外循环做第一次的时候,j=2;外循环做第二次的时候,j=4;
      s=s+j;
}
printf("%d\n",s);
}
过程:
k=2,s=1, 内循环:不管,因为之后s又变回原来的值,所以毫无意义;
k=4, s=1, 内循环:j=4, s=1+4=5; j=5, s=5+5=10; s=6,跳出内循环
k=6, 跳出外循环
输出 s=10

三十年河东,三十年河西,莫欺少年穷!
2013-03-30 10:26
第二周杰伦
Rank: 2
等 级:论坛游民
帖 子:55
专家分:20
注 册:2013-3-23
收藏
得分:0 
你定义了一个两层的循环,执行完外循环之后才会执行内循环,外循环执行2次(因为你的初始值是1,使循环结束的变量每次增2),而外循环执行一次,内循环执行4次;而你外循环每次执行时都对s重新赋值。所以你的内循环执行对s值的改变在每次外循环执行时都归1.那么要看s的最终值直接看外循环最后一次执行的影响。此时k=4,s=1;
j  s  s+j
4  1  5
5  5  10
6>6不满足。结束   故s=10
我也是新手。互相学习。希望对你有所帮助。

   
2013-03-30 11:22
快速回复:本人大学生刚解除C语言区求大神详细的解释下这个关于for语句的程序
数据加载中...
 
   



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

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