本节主要介绍循环结构
一、while循环
/* 语法: while(表达式){ //循环体; } 注意:循环变量、循环条件和循环控制语句三者缺一不可。 例如: */ int num = 0; //循环变量 while(num < 5 ){ //循环条件 printf(" %d",num): num++; //控制循环结束语句 } //例如:计算1到100的和 int sum = 0; int i=1; while(i<=100){ sum+=i; i++; } printf("sum= %d",sum); /** 注意: 1、避免死循环,避免永真或永假。永真死循环,永假不执行,毫无意义。 2、while循环后面千万不要加分号。 3、结束循环的语句不要忘记写。 4、和if一样,大括号可以省略,只能控制离它最近的一条语句,并且这条语句不能是声明变量的语句。 5、在循环内声明的变量,不能在循环外使用。 /
下面扩展一个知识点,首先看一个问题,让用户输入n个数字,然后在这n个数字中,判断出最大的数字,最小的数字(对于有编程基础的肯定有很多种方式去解决这个问题)。
int i = 1; int max = INT_32MIN;//首先我们要有一个我们认为最大的数字,这个数字必须极限小,以保证用户输入的每一个数字都比这个数字大。 int min = INT_32MAX;//首先我们要有一个我们认为最小的数字,这个数字必须极限大,以保证用户输入的每一个数字都比这个数字小。 while(i <= 5){ printf("请输入第%d个数字:"); int num ; scanf("%d",num); if(num>max){ max=num; } if(num<min){ min=num; } } printf("最大的数字为:%d 最小的数字为:%d: ",max,min);
当然还有别的方法,就是把我们认为最大/最小的数字设置为用户第一次输入的数字,然后在循环判断。
二、do-while循环
/* 语法: do{ 循环体; }while(表达式); 注意:while后面一定要加分号。 执行过程:先执行循环体,在执行循环体,判断是否执行。 循环体至少会执行一次。 */ //例如: int num = 0; do{ printf("%d",num) num++; }while(num>=0&&num<10);
三、for循环
/* 语法: for(表达式1;表达式2;表达式3){ //循环体; } 注意:1、先执行表达式1,跳转到2; 2、判断表达式2是否为真,如果为真,跳转到3,如果为假,跳转到5。 3、执行循环体,执行完毕,跳转到4。 4、执行表达式3,执行完毕跳转到2。 5、跳出循环。 其他格式: //死循环 for(;;){ // 循环体 } for(;表达式2;表达式3){ //循环体; } //所有的表达式都可以省略,但是可能回出现死循环,需要注意。 */ //例如: for(int i =0 ; i<10;i++){ printf("%d",i); } //输出0到9。
怎么用for循环打出100到999之间的水仙花数呢?(水仙花数:百位的立方+十位的立方+个位的立方=这个数的本身)。
/* 取百位、十位、个位的数字分别: 百位 = 原数字/100; 十位 = 原数字/10%10; 个位 = 原数字%10; 这样能分别取到相对应的数字。 下面开始打印。 */ for (int i = 100;i<=999;i++){ int bw = i/100; int sw = i/10%10; int gw = i%10; if(bw*bw*bw + sw*sw*sw+gw*gw*gw == i){ printf("%d " i); } }
for循环可以嵌套,看如下实例:
//打印九九乘法表 for(int i = 1; i<=9 ; i++){ for(int j = 1; j<=i ; j++){ printf(" %d × %d = %d ",i,j,i*j); } printf(" "); } //打印等腰三角形 for(int i = 1 ;i=5 ;i++){ for(int j = 1;j<=5-i;j++) //这里写的5是行数 printf(" "); for (int k= 1;k <= i * 2 - 1; k++) printf("*"); printf(" "); } //注意:循环的嵌套一般是用来控制平面,外层循环控制行数,内层循环控制列数。
如果想跳出当前的循环,使用break关键字,例如:
//得到1到10之间的第一个奇数 for(int i = 1; i<=10,i++){ if(i%2==1){ printf("%d",i); break; } }
如果想结束本次循环,继续下次循环,用contiune关键字,例如:
//打印出1到10之间的偶数 for(int i =1 ;i<=10;i++){ if(i%2==1){ continue; } printf("%d",i); }