【新视野】C语言基础知识(5)--循环语句
1.for循环
for(表达式1;表达式2;表达式3){语句块}
表达式1:表示的是初始化条件; 表达式2:循环条件 表达式3:自增或自减 for循环中三个表达式都可以省略,但分号必须保留。
示例:计算1+2+3+...+100#include /*计算1+2+3+...+100*/int main(){int i;int sum=0;for(i=1;i<=100;i++){printf("i=%dn",i);sum+=i;//sum=sum+i;}printf("sum=%dn",sum);}
1.1 for循环嵌套
#include int main(){int i,j;int cnt=0;for(i=0;i<3;i++)//i=0,1,2{for(j=0;j<5;j++)//j=0,1,2,3,4{ //j=0,1,2,3,4cnt++;printf("第%d次循环:i=%d,j=%dn",cnt,i,j);if(j==2)break;/*break跳出当前循环*/}}return 0;}[wbyq@wbyq 123]$ gcc main.c [wbyq@wbyq 123]$ ./a.out 第1次循环:i=0,j=0第2次循环:i=0,j=1第3次循环:i=0,j=2第4次循环:i=1,j=0第5次循环:i=1,j=1第6次循环:i=1,j=2第7次循环:i=2,j=0第8次循环:i=2,j=1第9次循环:i=2,j=2
注意:break只能跳出一层循环
【资料图】
2.while循环
while(表达式){语句块}
示例:2+4+6+8...+100#include /*示例:2+4+6+8...+100*/int main(){int i=2;int sum=0;while(i<=100){sum+=i;i+=2;}printf("sum=%dn",sum);}
3.do..while循环
do{ 语句块}while(表达式);
while和do...while区别:while循环条件为真才能执行里面的语句块,do...while先执行一次语句块,再判断条件。
4.循环控制语句
控制语句 | 描述 |
break语句 | 终止循环或switch语句,程序将执行紧接着循环或switch的下一条语句 |
continue语句 | 立刻停止本轮循环,重新开始下轮循环 |
goto语句 | 将控制跳转到被标记的语句。不太建议程序中使用goto语句 |
4.1 break语句
C语言中break语句有以下两种用法:
①用于循环语句中,当break语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。 ②用于switch结构中,它可用于终止switch语句中的一个case。
如果使用的是嵌套循环(即一个循环内嵌套另一个循环), break语句会停止执行其所在的那层循环,然后开始执行该块之后的下一行代码。
4.2 continue语句
C语言中的continue语句有点像 break 语句。但它不是强迫终止, continue会结束当前循环中的代码,强迫开始下一次循环。
对于for循环,continue语句执行后自增语句仍然会执行。
对于while和do...while循环,continue 语句会重新执行条件判断语句。
4.3 goto语句
C语言中的goto语句允许把控制无条件转移到同一函数内的被标记的语句。
注意:在任何编程语言中,都不建议使用goto语句。一是因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用goto语句的程序可以改写成不需要使用goto语句的写法。二是goto语句容易破坏原本的代码结构。
C语言中goto语句的语法:
Label:printf("goto语句使用!n");.....语句块;...goto Label:
在这里,label可以是任何除C关键字以外的纯文本,它可以设置在C程序中goto语句的前面或者后面。
5.练习
1.求100以内自然数中偶数之和。
2.输出200~400以内能被3整除且个位数字为6的整数。
3.计算:1*2*3+3*4*5+。。。。 +99*100*101 的值。
4.输出所有水仙花数。(水仙花数:一个三位数,它的每个位上的数字的3次幂只和等于他本身)
5.排列组合问题:一个口袋中放有12个球,已知其中3个是红色的,3个是白色的,6个是黑色的,现在从中任取8个,问共有多少种可能的颜色搭配。
6.判断2~100之间所有素数。(只能被本身整除的数,比如:3 、7、13。
7.输出2~1000之间的可逆素数。
8.打印正三角形和倒三角形。
9.输出9*9乘法表。
10.韩信点兵:相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人 数了。请输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
11.有一个4位数,它的9倍数恰好是其反序数,求该数。(反序数就是将其倒过来形参的整数,例1234的反序数就是4321。)
12.求一个三位数,该三位数等于其每个位数字的阶乘之和。
13.输出1000以内所有的完全数。(完全数:一个数恰好等于它的因子之和。如6的因子为1 2 3,而1+2+3=6)
14.输出具有abcd=(ab+cd)²性质的四位数。
15.将100元换成1元、5元、10元有多少种换法?
16.百元买白鸡问题:100块钱买100只鸡,公鸡5块1只、母鸡3块1只,小鸡3只1块,输出所有的买法。
17.有一个数列:1、1、2、3 、5 、8... 通过输入下标,输出对应的值,下标从1开始。例如输入3,输出2;输入5,输出5;
18.爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨⒉阶,则最后剩1阶,若每步跨3阶﹐则最后剩⒉阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?
19.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征(假设仅为数字)。 甲说:牌照的前两位数字是相同的; 乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
20.如果一个数恰好等于它的因子之和,则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。试求出1000以内的全部“完全数”。
21.谁在说谎问题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?审核编辑:汤梓红
标签: