注册 登录
编程论坛 C++教室

[讨论]循环语句 师兄姐师弟妹都来讨论下```

孤魂居士 发布于 2007-06-01 16:11, 1003 次点击
今天上C++课,老师点人上去做题目 有个女生把题目是做出来了 而且是对 的 但是还是受到了老师的批评
你们肯定很疑惑```做对了还批评?
是这样的:
我们老师很反感别人循环语句用while循环 他非常喜欢for
他说for简洁易懂,语句清晰 他还严格要求我们"要有良好的编程风格,用循环时候必须用for不许我们用while"
卷子和作业必须得这样做 我不知道这种逼迫学生学习固定的语法,以后对自己有没有害处?
是不是while的功能for完全可以体现出来? 以后用循环是不是可以淘汰while???
那while和for究竟有什么各自的特点优点?什么场合下用就完全没有区分吗?
师兄师弟 都发表下意见吧``
``````
`````
我while循环 现在越来越陌生了 其实我也慢排斥它的 我循环基本上没有用过while


12 回复
#2
aipb20072007-06-01 17:15
多数程序员偏爱for,这是事实。
但是whlie也有它的好处啊,有些地方用起来可以使代码简洁些
比如你要以流的合法性作为条件循环,比如
while(cin >> ch)
这样好还是
for(;cin >> ch ;)这样好是显而易见的吧!

我的理解是,在循环中需要对一个索引值自增,自减,或者按序改变时用for.
#3
yushui2007-06-01 18:28

for有时候感觉是要好用点 像嵌套 一般都是用for 不过while也挺好的 就像楼上说的 还有 就是有些用do while的结构会比用fo的更简洁 方便

#4
foreverlh2007-06-01 20:29
我们老师也是这么说的,不过没你老师那么死板哎..
当循环次数未知时候用while语句更清晰明了.
这个看需求啦,反正我for循环想不出来的时候就会考虑while算法.
而且有些问题,用while比较好,例如
要求你在键盘上持续给一维数组送数,int a[100]
一般情况下肯定用不到100啦,这里100就是个上限,初级数据结构课经常有的.
int a[100],i,j=0;
cout<<"请输入数据,输入-1时结束"<<endl;
cin>>i;
while(i!=-1)
{
a[j]=i;
j++;
cin>>i;
}


用for循环是不是这样写?
int a[100],i,j;
cout<<"请输入数据,输入-1时结束"<<endl;
cin>>i;
for(j=0;i!=-1;j++)
{
a[j]=i;
cin>>i;
}

个人感觉初学的时候while比较好理解一些的说
#5
weishj2007-06-01 22:30

其实我感觉有些时候用while是相当爽的,比如:
要让程序运行暂时停顿,直到用户按键为止.
用while(!_kbhit());
很方便完成任务,但用for似乎不是很爽.
不过在涉及循环控制变量改变的情况下好象for方便些,
如for(int i=0;i<n;i++) a[i]=i;
若用while得写成int i=0;while(i<n) a[i]=i++;不过整体差别感觉还是不大,还是看自己爱好吧

[此贴子已经被作者于2007-6-1 22:31:09编辑过]

#6
孤魂居士2007-06-09 21:22
说句实话,我学C和C++和起来快1年了  对于循环 我都是考虑的for我没有用过while
在我印象中都不知道while怎么用了  哎  这坏毛病要改```````````````````
#7
herbert_19872007-06-10 09:02
老师怎能这样教书的,这样很容易扼杀学生的创造性思维的.
#8
ichigo2007-06-10 09:39
还有这样的老师...还是大学老师...有点晕..
#9
doom52112007-06-10 11:16
以下是引用foreverlh在2007-6-1 20:29:14的发言:
我们老师也是这么说的,不过没你老师那么死板哎..
当循环次数未知时候用while语句更清晰明了.
这个看需求啦,反正我for循环想不出来的时候就会考虑while算法.
而且有些问题,用while比较好,例如
要求你在键盘上持续给一维数组送数,int a[100]
一般情况下肯定用不到100啦,这里100就是个上限,初级数据结构课经常有的.
int a[100],i,j=0;
cout<<"请输入数据,输入-1时结束"<<endl;
cin>>i;
while(i!=-1)
{
a[j]=i;
j++;
cin>>i;
}


用for循环是不是这样写?
int a[100],i,j;
cout<<"请输入数据,输入-1时结束"<<endl;
cin>>i;
for(j=0;i!=-1;j++)
{
a[j]=i;
cin>>i;
}

个人感觉初学的时候while比较好理解一些的说
这里面用for循环写的程序是否有点问题哦,for语句中没有对j的判断条件,如果输入的i不等于-1,那不是要一直循环下去,数组不会越界吗?提出个人愚见,也不一定正确,大虾指导下
#10
haohaoxue2007-06-10 12:14
for(j=0;i!=-1&&j<100;j++)
这样应该行了吧!
#11
qqwuming2007-06-12 09:37

在程序中哪个更合适就用哪个

#12
Dam30002007-06-12 10:30
送个给楼主的老师~~~
有本事限制学生用哪种循环为什么不干脆写篇论文——《while语句有害》搞不好又会掀起软件行业上的一次革命呢!!!
楼主,安慰一下那位女生吧,不要让将来信息产业的栋梁被抹杀了
虽然我也很少用while

[此贴子已经被作者于2007-6-12 10:31:38编辑过]

#13
孤魂居士2007-06-12 11:35

我发现我们老师是搞硬件的```
他不是专业搞C++的
我们学校请不起别人名教```请的这个老师是武汉大学的```晕死``
哎```他还说goto语句是流氓语句```也不赞成我们使用```我怀疑他就想我们只会顺序结构 其他的都不会```
1