C语言循环结构专题

这是我对近期循环结构学习的整理,菜鸟的见解,还请大佬多多指教。

在我看来,循环结构是C语言中占比重较大的一部分,很多问题的解决都离不开它,小到排序,大到游戏,都离不开它!

●结构化程序设计的三种基本结构:
     顺序结构
     选择结构
     循环结构
●循环结构的分类
1、按重复次数
   计数控制的循环:重复处理的次数已     知
   条件控制的循环:重复处理的次数   未。知,由给定条件控制
2、按类型
   当型循环结构:当条件P成立(为真)时,反复执行A操作,直到条

件P不成立(为假)时结束循环。
   直到型循环结构:先执行A操作,再判断条件P是否成立(为真),若条件P成立(为真),则反复执行A操作,直到条件P不成立(为假)时结束循环。
●循环语句:
1、while语句(当型循环)
while(循环控制表达式)
{
语句序列  
}
适合于循环次数未知、条件控制的循环。
2、do-while语句(直到型循环)
do
{
语句序列
}while(循环控制表达式);
在循环底部进行循环条件测试,循环至少执行一次。适用于循环次数未知、条件控制的循环。
3、for语句(当型循环)
for(初始化表达式;循环结构表达式;增值表达式)
{
语句序列
}
注:初始化表达式的作用是赋初值,如何对循环变量进行增值决定了循环的执行次数。
在循环顶部进行循环条件测试,如果循环条件第一次测试就为假,则循环体一次也不执行。适合于循环次数已知、计数控制的循环。


就我个人而言,相较于费时费力的do-while循环结构和复杂的while循环结构,我个人更习惯用for循环结构,而且一般情况下while语句可用for语句等价实现。但也仅是我个人观点。
●for语句注意事项:
1、​for语句可用while语句等价实现:
初始化表达式;
while(循环控制表达式)
{

语句序列

增值表达式;
}
2、for语句中三个表达式之间的分隔符是分号,有且仅有两个分号,既不能多也不能少。一般情况下,循环控制表达式很少省略,若省略,则表示循环条件永真。当已在for语句前面为循环控制变量赋初值时,初始化表达式可以省略;当已在循环体中改变了循环控制变量时,增值表达式可以省略。
3、在for语句中,各个表达式中可通过逗号运算符把多个表达式连接在一起,构成逗号表达式,主要用在同时为多个变量赋初值的时候,这样可大量减少循环次数。
如for(i=1,j=n;i<=j;i++,j--)
4、当for语句中的循环体是空语句(仅由一个分号构成的语句)时,表示在循环体中什么也不做,可使程序延时。有三种写法:
①for(i=1;i<500000;i++)
{
      ;
}
②for(i=1;i<500000;i++)
{
}
③for(i=1;i<500000;i++);
注:除非特殊需要,一般不在for语句后加分号。
而且,若while语句后面被意外的加上分号,可能会产生死循环。
●计数控制的循环
循环次数事先已知的循环,且习惯上用for语句编写计数控制的循环更为方便。
●嵌套循环
将一个循环语句放在另一个循环语句的循环语句的循环体中构成的循环。
while循环,for循环,do-while循环都可以使用。
●条件控制的循环
循环次数事先未知的循环通常是由一个条件控制的,此时用while语句和dowhile语句编程更方便。

 

对我来说,for循环的使用次数远远大于while循环和do—while循环,当然,一部分原因可能是个人习惯,但for循环使用起来的确比while循环以及do—while循环方便很多,它更符合我们日常思维,逻辑思路。就我所知,我周围学习C语言的人大部分都习惯于使用for循环。当然,for循环也有它的弊端,如若要进行多组输入,那么这时只能用while循环解决。可以说是各有利弊吧,但相较来说for循环使用更普遍(只是我个人看法,我周围人大部分都习惯于for循环)。

 

最近写openjudge的时候也遇到了一些困难,也是和for循环有关,一个小游戏——石头剪刀布,足足困扰了我一个星期。一开始采用switch结构,然后又采用if条件控制语句,后来又尝试while循环,都WA。最后还是for循环AC的,真的是要崩溃了。当然,不排除存在思路错误。目前作为一个菜鸟,还在不断提高自己的能力,也在不停的练习,尝试新的思路,方法。一题多解,尽量把每种想法都实现,把每个方法都试遍。从菜鸟到大牛,差的不只是一点点,还需要更努力才行!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 请写1个支付宝接龙红包程序. 随机产生1-100的随机数,作为红包金额. 让用户不断的去猜,直到猜确为止.最后发给用户的红包金额是 红包金额/猜得次数. 2. 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 3. 实现要求用户一直输入QQ号码和密码,只要不是123456、888888就一直提示要求重新输入,如果确则提登录成功. 4. 1-100之间不能够被7整除的数的和. 5. 求1-200之间的所有的整数的累加和 6. 求1-100之间6的倍数的个数 7. 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩 8. 2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*** 9. 从键盘输入10个数,求出最大数 10. 1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5)), 并统计满足条件的整数有多少个。 11. 求1-100 是7的倍数 的数值之和 12. 求1-1000之间的所有的奇数之和 13.猜数字游戏. 随机产生1个1-100之间的数 让用户猜 当用户输入的数比产生的随机数大 就输出 猜大了 并让用户继续输入新的数.。 当用户输入的比产生的随机数小的时候 就输出 猜小了 并且继续猜 当用户刚好输入的就是这个随机数的时候 提示成功 并显示用户猜了多少次. 14. 老师问学生,这道题你会做了吗? 如果学生答"会了(y)",则可以放学. 如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学. 直到学生会或老师给他讲了10遍还不会,都要放学 15. 写1个程序. 随机的产生1个2位数的加法运算.让用户输入这个运算的结果 然后判断这个结果是否确. 来10次. 每个人默认有10分. 产生10个加法运算.操作数的范围在0-100之间. 每产生1个加法运算 就让用户输入结果.判断是否确. 当回答确的时候就为用户加1分. 错误的时候就扣1分. 当10道题目回答完毕之后 就显示用户得的分数. ***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值