主页 > 互联网 > 内容页

【新视野】C语言基础知识(5)--循环语句

2023-06-15 10:16:58 来源:嵌入式技术

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.谁在说谎问题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?审核编辑:汤梓红

标签:

上一篇:单船补助最高1500万元!又一省份发布电动船舶奖励措施! 环球观焦点
下一篇:最后一页