1.for循环
for(表达式1;表达式2;表达式3)
{
语句块
}
表达式1:表示的是初始化条件;
表达式2:循环条件
表达式3:自增或自减
for循环中三个表达式都可以省略,但分号必须保留。
- 示例:计算1+2+3+...+100
#include < stdio.h >
/*
计算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 < stdio.h >
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,4
cnt++;
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 < stdio.h >
/*
示例: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.谁在说谎问题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?
审核编辑:汤梓红
-
C语言
+关注
关注
180文章
7604浏览量
136750 -
关键字
+关注
关注
0文章
37浏览量
6895 -
循环语句
+关注
关注
0文章
10浏览量
4860
发布评论请先 登录
相关推荐
评论