C语言基础知识(5)--循环语句

描述

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


  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分