c循环相关

例:1到100求和,int i=1,sum=0;
for循环:
格式:for( ; ; ){}
例:for(i=1;i<=100;i++){
sum +=i;
}
for(变量起始值;循环中止条件;每次循环改变的数据){循环体}
其中内容皆可省略,()中的三点如有省略,其后的;不可省,全部省略即相当于无限循环,如若没有跳出条件即死循环。如若循环体只有一句,{}亦可省略,不过出于规范书写及调试,此处不建议省略。
while循环:
格式:while(条件){循环体 }
当条件为真时执行循环体,为假时退出,也可从循环体退出循环
条件为1或者true时,一直执行循环体,即死循环,只能由循环体内break或return退出循环
例:while(i<=100){
sum+=i;
i++;
}
例2:while(1){
if(i>100){
break;//return 0;
}
sum+=i;
i++;
}
do while循环
格式:do{循环体}while(条件)
这个没什么好说的,跟while原理差不多,区别在于while满足条件才会执行循环体,不满足就不执行。do while先执行循环体,再判断是否满足条件,满足则继续执行。即do while至少要执行一次循环体。看个人习惯吧,我个人用while比较多,do while几乎没用过
例: do{
sum+=i;
i++;
}while(i<=100)
switch分支选择语句
switch case作为分支选择语句,本质上很少用于循环,不过稍加改动也可以当作循环使用
switch(变量){
case xx: 执行语句;break;
default:
}
作为分支选择的解释是switch(变量名),变量名的值如果与case后面的xx相同,则执行后面的语句 ,然后break退出。如果不加break,则会执行下面的case语句,直到遇到break或者执行结束,注:如果不加break,下面的值将不会与case值比较,而是直接执行。这个可也用于计算一些数值,比如说我要计算某年中某一天日期是一年中的第多少天,可以约定每月的天数:
假如1到12月分别31 28 31 30 31 30 31 31 30 31 30 31天
输入月份与日期:
scanf ("%d",&month);
scanf("%d",&day);(此处只做举例,不考虑输入的合理性,如真的这样用,请对输入日期加以判断,确保真实有效!)
switch(month){
case 12:sum+=30;//如果12月,则本月天数应该加day,此处是11月的全部天数,以此类推,3是2月的天数,2是一月的天数
case 11:sum+=31;
.
.
.
case 1:sum+=day//如果是一月本月,则就是day天,如果不是,则是输入月份的day天
default:break;//可以省略
}如果是12月10号,则从11月的30天加到一月,再加10天
switch(month-1){//当前月不计算全部天数,故减一,计算当前月之前的天数
case 11:sum+=30;
case 10:sum+=31;
.
.
.
case 1:sum+=31;
default:sum+=day;break加上本月的已过的天数
}
switch可以作为循环体使用,当程序有选项时可以通过while(1)配合switch使用,也可以配合goto使用
goto跳转语句
格式:a:
goto a;
a为标识名,可以当作约定,goto跳转到a处继续执行
例:int opt=1;
a:
switch(opt){
case 1:sum+=i;i++;opt=2;break;
case 2:sum+=i;i++;opt=1;break;
}
if(i<=100){
goto a;
}
运行是进入switch,执行完毕判断,小于100跳转回a执行switch,这里当然可以不用改变opt,直接一条就可以达到目的,但是跟上面呼应一下,用了改变opt,改变opt的作用是可以在这两句里循环,如果我case 1是打印1 case2是打印2就可以看到121212121212…的循环打印现象。
goto语句如非必然,尽量避免使用,容易崩溃,不好掌握,而且会给调试增加难度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值