博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小甲鱼笔记C语言入门(四)——goto语句,while语句,dowhile语句,for语句。break与continue
阅读量:3508 次
发布时间:2019-05-20

本文共 2760 字,大约阅读时间需要 9 分钟。

一、 概述

循环结构是程序中一种很重要的结构,其特点是,在给定条件成立时,9反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。

C语言提供了很多循环语句,可以组成各种不同形式的循环结构。

  • 用goto语句和if语句构成循环
  • 用while语句
  • 用do-while语句
  • 用for语句

二、 goto语句

goto语句是一种无条件转移的语句,与BASIC种的goto语句相似。goto语句的使用格式为:

goto 语句标号;

  • 其中标号是一个有效的标识,这个标识链加上一个冒号“:”一起出现在函数内某处,行 goto 语句后,程序将跳转到该标号处并行其后的语句。

  • 另外标号必与 goto 语句同处于一个函数中,但可以不在一个循玚层中。

  • 通常 goto 语句与 if 条件语句连用,当满是某一条件时,程序跳到标号处运行。

  • 但是注意: goto 语句通常不用主要因为它将程序层次不清,且不易读,但在多层嵌套退出时,用 goto 语句比较台理。

    例题:用goto语句和if语句构成1-100的累加

void main() {
int i, sum = 0; i = 1; loop:if (i<=100) {
sum += i; i++; goto loop; } printf("%d\n", sum);}

三、 while语句

  • 一般形式为
while(表达式)语句其中表达式时循环条件,语句为循环体
  • while语句的语义是:

计算表达式的值,当值为真(非0)时,执行循环体语句。如果表达式的语句一开始就是0,那么就不执行语句

int i, sum = 0;	i = 1;	while (i <= 100)	{
sum += i; i++; } printf("%d\n", sum);* 注意事项: 1. while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环int a = 0, n; printf("输入一个数"); scanf("%d",&n); while (n--) {
printf("%d",a++*2);//此处相当于先执行a*2再a++ }
  1. 循环体如包括右一个以上的语句,则必须用{ }括起来,组成复合语句

四、 do-while语句

  • 一般形式为:
do	语句	while (表达式);
  • 语义为:

先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环,因为do-while循环至少要执行一次循环语句

void main() {
int i, sum = 0; i = 1; do{
sum += i; i++; } while (i <= 100); printf("%d\n", sum);}

五、 for语句

  • 一般形式为:
for(表达式1;表达式2;表达式3) 语句
  • 执行过程

    1. 先求表达式1
    2. 求解表达式2,若其值为真。则执行for语句中指定的内嵌语句,然后执行下面 的第三步;若为假,则循环节输。转到第五步
    3. 求解表达式3
    4. 转回上面的第2步继续执行
    5. 循环结束,执行for语句下面的一个语句
void main() {
int sum = 0; for (int i = 0; i < 100; i++) {
sum += i; } printf("%d",sum);}
  • 注意事项:

    1. for循环中,表达式1,2,3都是选择项,即可以缺省,但是”;”不能缺省  2. 省略表达式1,表示不对循环控制变量赋初值(可在for语句上方进行赋值)  3. 省略表达式2,不做其他处理时,便为死循环  4. 省略表达式3,则不对循环控制变量进行操作。(可以在内部进行递增)  5. 三个表达式省略便为死循环  6. 表达式1,3可以用逗号赋多个初值。
  • 循环嵌套

    for中加for

void main() {
for (int i = 1; i < 6; i++) {
for (int j = 1; j <= i; j++) {
printf("*"); } printf("\n"); }}

六、 几种循环的比较

  1. 四种循环可以用来处理同一问题,一般情况下可以相互代替,一般不提倡使用goto型循环

  2. 用while循环和do-while循环中,只在while后面的括号内指定循环条件,因为为了使循环能正常节输,应在循环体中包含使循环趋于结束的语句(如i++,或i=i+1等)

    for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放在表达式3中。因此for语句的功能更强

  3. while和do-while循环时,初始化操作必须在使用while之前,但是for循环可以在括号里面进行设置初值

  4. goto语句不能使用break,continue语句。其他均可以。

七、 break和continue语句

1.break语句

  • 可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句
    一般形式:break;
  • 不能用于用于循环语句和switch语句之外的任何语句
  • break语句对if-else的条件语句不起作用
  • 在多层循环中,一个break语句只向外跳一层

2.continue语句

  • 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。一般形式:continue;
  • continue语句只结束本次循环,而不是终止整个循环的执行。
  • break语句是结束整个循环过程,不再判断执行循环的条件是否成立

八、例题

例题1:把100~200之间不能被3整除的数输出

void main() {
int n; for (int i = 100; i < 200; i++) {
if (n % 3 == 0) continue; printf("%d\n",n); }}//如果被三整除,就跳出循环,不打印printf语句

例题2:用Π/4约等于1-1/3+1/5-1/7…直到某一项绝对值小于为止

void main() {
int s=1; double n=1.0, t =1, pi=0; while (fabs(t)>1e-6)//十的-6次方,3.14159 {
pi = pi + t; n += 2; //循环一次就变一次符号 s = -s; t = s / n; } pi *= 4; printf("pi=%10.6f\n", pi);}

转载地址:http://itxmj.baihongyu.com/

你可能感兴趣的文章
重学JavaScript(01):JS代码为什么可以在浏览器中运行?
查看>>
web前端基础:CSS字体与文本样式
查看>>
两天,我把分布式事务搞完了
查看>>
肝!分享两本高质量网络/算法书籍,进大厂必备!
查看>>
命名实体识别:详解BiLSTM_CRF_Pytorch_Tutorial代码
查看>>
建表参数(pctfree,IniTrans,maxtrans)含义
查看>>
springBoot官方入门篇一 引入依赖并运行
查看>>
java大牛25点
查看>>
LSTM 讲解
查看>>
SpringBoot中启动的端口与设置的端口不一致
查看>>
Lua 元表及元方法
查看>>
C#常用的设计模式
查看>>
C#-快速排序算法
查看>>
docker 部署SpringBoot项目
查看>>
mybatis基础知识(四)&输入映射与输出映射
查看>>
gitflow工作流
查看>>
【MongoDB】update修改器($set、$unset、$inc、$push、$pull、$pop)
查看>>
JAVA 继承
查看>>
电脑键盘突然不能打字,很多键变成快捷键了
查看>>
Hbase表映射Hive表三种方法
查看>>