5.1 为什么需要循环控制
用于处理需要进行重复的操作。
5.2 用while语句实现循环
语法结构:
while(表达式) 语句
语句就是循环体:可以是单条语句,也可以是复合语句
表达式被称为循环条件表达式:表达式的值为非0(真)时就执行循环体语句
特点:先判断,在执行。
注意:
- 循环体如果是多个语句,应该用花括号括起来,作为复合语句的出现。
- 必须给i和sum赋初始值,否则值是随机的。
- 循环体中应有使循环趋向于结束的语句。
5.3 用do….while语句实现循环
语法结构
do
语句
while(表达式);
特点:先执行一次循环体,然后判断条件是否成立。条件成立,再执行循环体。
一般情况下,while和do/while处理同一问题时,若二者的循环体部分一样,name结果也一样。
5.4 用for语句实现循环
可以完全代替while语句,for语句更为灵活。
语法结构:
for(表达式1;表达式2;表达式3)
语句
3个边大师的主要作用:
表达式1:设置初始条件,只执行一次,可以为零个,一个或多个变量设置初值
表达式2:循环条件表达式,循环的判断。
表达式3:作为循环的调整,例如使循环变量增值,它是执行完循环体后才进行的
for语句的执行过程如下:
- 执行表达式1
- 执行表达式2,表达式值为真,则执行循环体,然后执行第3步,为假,则结束循环转到第5步。
- 执行表达式3.
- 执行第2步
- 结束循环
可以在for语句外设置表达式1
可以在for语句循环体内设置表达式3
不写表达式2,判断条件为真 即非0
注意:
C99支持在 表达式1里进行变量定义赋值,C89支持赋值,不支持定义
表示式2只要不是值为非0任何表达式 就执行循环体
5.5 循环的嵌套
想想Java就行了
5.6 几种循环的比较
3种循环都可以用来处理同一问题,一般情况下他们可以相互代替。
while和do/while循环中,只在while后面括号内指定循环条件,为了能使循环能正常结束,循环体内包含驱使循环结束的语句。
for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体语句放在表达式3中。因此for语句的功能更强。
while和do/while,循环变量初始化的操作应在while和do/while语句之前完成。
3种循环语句都可以用break跳出循环,continue语句结束本次循环
5.7 改变循环执行状态
5.7.1 用break语句提前终止循环
作用是使流程跳出循环体之外,接着执行循环体下面的语句。
5.7.2 用continue提前结束本次循环
作用:有时不希望终止整个循环的操作,而只希望提前结束本次循环,接着执行下次循环。
5.7.3 break和continue的区别
continue:结束本次循环
break:终止整个循环的执行
# include <stdio.h>
int main ()
{
int i,j;
for(i=1;i<5;i++)
{
for(j=1;j<=i*5;j++)
{
if(j%i!=0)
continue;
printf("%d\t",j);
}
printf("\n");
}
return 0;
}
5.8 循环程序举例
getchar()函数:不会直接读取用户输入字符,用户输入的字符输入后,会存入到缓冲区。后续可以接着用getchar()调用,直到缓冲区中没有字符。
说明:
当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCII码。
如出错返回-1,且将用户输入的字符回显到屏幕,如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。
也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。
# include <stdio.h>
int main()
{
/*
转换字符串(字母)
*/
char c;
c=getchar();
while(c!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
if((c>='w'&&c<='z')||(c>='W'&&c<='Z'))
c-=22;
else
c+=4;
}
printf("%c",c);
c=getchar();//从缓冲区中读取剩余的字符
}
printf("\n");
return 0;
}
- 本文链接:https://www.nscblog.top/posts/6d0a7f0b/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues