黑马程序员__C语言__循环结构
循环结构
while循环
1.while循环基本使用
1 int main() 2 { 3 int cout = 0; 4 while(count<=50) 5 { 6 ++count; 7 printf("做第%d次俯卧撑\n count");//(循环体) 8 9 } 10 return 0; 11 }
使用while 循环的时候,先确定需要重复执行的操作,在确定约束条件。
2.while循环的关键字
continue
结束当前的循环体,进入下一次循环体的执行
1 int main() 2 { 3 int cout = 0; 4 while(count<=50) 5 { 6 ++count; 7 if(count%10 ==0); 8 { 9 continue; //如果是10的倍数,那么就跳出if重新判断循环条件 10 } 11 printf("做第%d次俯卧撑\n count");//(循环体) 12 } 13 return 0; 14 } 15
break
直接结束整个while循环,退出整个循环的关键字
1 int main() 2 { 3 int cout = 0; 4 while(count<=50) 5 { 6 ++count; 7 printf("做第%d次俯卧撑\n count"); 8 if(count == 30) 9 { 10 break; //意思是循环进行到count== 30的时候退出整个while循环 11 } 12 } 13 return 0; 14 }
总结
while 循环运行原理
1.如果一开始条件不成立,永远不会执行循环体
2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立.......
练习1:
提示用户输入一个正整数n,计算1+2+3+...+n的和
1 #include <stdio.h> 2 3 int main () 4 { 5 int n =0; // 一定要初始化 6 while(n <= 0) 7 { 8 //1.提示输入 9 printf(请输入一个正整数:\n); 10 //2.接收输入 11 12 scanf("%d", &n); 13 } 14 15 16 17 18 /*****************方法2************** 19 int n; 20 if ( n <= 0) 21 { 22 printf("非法输入!!"); 23 return 0; 24 } 25 int sum = 0 26 27 ***********************************/ 28 29 int number =1 //默认被加的数值 30 31 // 3.计算 32 while (number < n) 33 { 34 sum += number; 35 number++; 36 } 37 38 printf("%d\n", sum) 39 return 0; 40 }
练习2:
计算100以内所有3的倍数的个数
1 #include <stdio.h> 2 3 int main () 4 { 5 // 记录3的倍数的个数 6 int count = 0; 7 8 // 记录当前检查的数值 9 int number = 0; 10 11 while (number <100 ) 12 { 13 number++; 14 //说明number是3的倍数 15 16 if(number%3 == 0){ 17 count++; 18 } 19 } 20 printf ("1-100内3的倍数的个数:%d\n, count") 21 return 0; 22 }
while循环使用注意
while(10) // 10为真,为1
{
printf("hahahah\n");
}
上面代码会引发死循环,所以要注意while循环的条件
int a = 10;
while(a>0)
printf("hahahah\n"); // 如果while后面没有大括号,那么会默认while后面第一个语句为循环体
{
}
int a = 10;
while(a>0); // 死循环,后面的分号代表while循环这个结构完了,后面不是while的部分
{
printf("hahahah\n");
}
while(1); //最简单的死循环
do while 循环
do{
}while(条件); // do while 循环不管条件成不成立都会先执行一次条件
很多情况下while 和do while是可以互换的
for循环
for(语句1;条件;语句2)
{
循环体;
}
1 #include <stdio.h> 2 3 int main () 4 5 { 6 for( int count = 0; count <50 ; count++) 7 { 8 printf("做第%d次俯卧撑\n,count"); 9 } 10 return 0; 11 }
语句1:初始化语句
语句2:增量语句(执行完循环体后在执行的语句)
for循环一开始就会执行一次语句1(整个for循环只会执行一次)
判断条件是否成立,如果成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立
for 循环把变量定义在语句里面,语句结束后变量就会回收,而while 循环则把变量定义在语句外面,不能及时回收变量,所以for循环要比while性能要高。
for循环使用注意(在代码中详细介绍)
for(int i = 0;i<5;i++); //注意,不要随便在for()后面写分号
{
printf("haha\n");
}
下面是错误写法,for定义变量要加{},不然变量的作用域会不明确,编译器报错
for(int i = 0;i<5;i++);
int a = 10;
for(int i = 0;i<5;i++,a++);
{
int a = 10; 这样定义是错误的,因为执行a++之前变量a就已经销毁了
//int i = 10; 这样定义是没错误的,因为语句1定义的i的作用域已经包括了语句2里面的i++
}
//循环体每次执行完都会自动销毁
for(;;); // for循环最简单死循环
for循环嵌套(用在像输出QQ好友列表的时候)
1 #intclude <stdio.h> 2 int main() 3 { 4 for(int i=3;i<=3;i++) 5 { 6 printf("好友列表%d\n",i); 7 for(int j =1;j<=6; j++) 8 { 9 10 printf("好友%d\n",j); 11 } 12 } 13 return 0; 14 }
上面代码会输出i个好友列表,每个列表有j个好友
for循环嵌套练习
// 提示用户输入一个正整数n,如果n=5,就输出下列图形,其他n值以此类推
*****
****
***
**
*
1 #include <stdio.h> 2 int main() 3 { 4 //提示一个变量储存用户输入的值 5 int n =0; 6 7 //判断n值合不合理 8 while(n <=0) 9 { 10 提示用户输入正整数 11 printf("请输入一个正整数:\n"); 12 scanf(%d,&a); 13 } 14 //输出图形 15 16 for(int i=0; i<=n;i++) //有多少行 17 { 18 for(int j=0;j<=n-i;j++) 19 { 20 printf("*"); 21 } 22 pintf("\n"); 23 } 24 25 return 0; 26 }
额外知识补充
break和continue使用注意
break使用场合
1.switch语句,退出整个switch语句
2.循环结构:退出整个循环结构
while
do while
for
continue 使用场合
循环结构:结束当前这次循环体,进入下一个循环体
while
do while
for
break和while 只对最进的循环体有效