C语言 第五章 循环结构

一、for

请在屏幕上输出1000个*号

printf("*************************....");

#include "stdio.h"
void main()
{
    int i;
    for(i=1;i<=1000;i++){
      printf("*");
    }
}

for(表达式A;表达式B;表达式C) { 要重复执行的代码块D; }

1、表达式A先执行,且只执行一次

2、表达式B再执行,如果为真则执行代码块D

3、再执行表达式C,再选择表达式B,回到第2步

4、ABCD都可以省去 for(;i>=100;);

5、表达式1通常用来给循环变量赋初值,一般是赋值表达式i=1  i=-1,j=100

6、表达式2通常是循环条件,一般为关系表达式或逻辑表达式i>=5 i>5&&j<=8

7、表达式3通常可用来修改循环变量的值,一般是复合赋值语句i++,i--,  i+=5,j++

8、这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。

#include "stdio.h"
void main()
{
    int i,j;
    for(i=1;i<=10;i++)
    {
        printf("%d \n",i);
    }
}
#include "stdio.h"
void main()
{
    int i,j;
    for(i=-10;i<=10;i++)
    {
        printf("%d \n",i);
    }
}
#include "stdio.h"
void main()
{
    int i,j;
    for(i=1;i<=10;i=i+3)
    {
        printf("%d \n",i);
    }
}
#include "stdio.h"
void main()
{
    int i,j;
    for(i=10;i>0;i--)
    {
        printf("%d \n",i);
    }
}
#include "stdio.h"
void main()
{
    int i,j;
    for(i=10,j=1;i>0;i--,j++)
    {
        printf("%d + %d = 11 \n",i,j);
    }
}
#include "stdio.h"
void main()
{
    int i=1;
    for(;i<=10;i++)
    {
        printf("\n %d",i);    
    }
}
#include "stdio.h"
void main()
{
    int i=1;
    for(;i<=10;)
    {
        printf("\n %d",i);    
        i++;
    }
}
#include "stdio.h"
void main()
{
    int i=1;
    for(;;)
    {
        printf("\n %d",i);    
        i++;
        if(i>10)break;
    }
}

for语句中的各表达式都可省略,但分号间隔符不能少。如: for(;表达式;表达式)省去了表达式1。 for(表达式;;表达式)省去了表达式2。 for(表达式;表达式;)省去了表达式3。 for(;;)省去了全部表达式。 在循环变量已赋初值时,可省去表达式1,如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。 循环体(要重复的语句)可以是空语句。

练习:计算出1-100之间奇数之和。1+3+5+7....99=?

#include "stdio.h"
void main()
{
    //练习:计算出1-100之间奇数之和。1+3+5+7....99=?
    int i,s=0;
    for(i=1;i<=100;i++)
    {
        if(i%2==1){
            s=s+i;
        }
    }
    printf("结果:%d",s);
}

2500

#include "stdio.h"
void main()
{
    //练习:计算出1-100之间奇数之和。1+3+5+7....99=?
    int i,s=0;
    for(i=1;i<=100;i=i+2)
    {
            s=s+i;
    }
    printf("结果:%d",s);
}

2500

二、while

while语句的一般形式为: 初值; while(表达式A) { 表达式的值为真时要重复的语句块;B 步长; } 其中表达式是循环条件 要重复的语句块和步长都为循环体 while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。

1、程序先判断A是否为真,如果为真则执行循环体B

2、当执行完循环体后再回到第1步

3、当表达式A为假时结束循环

#include "stdio.h"
void main()
{
    int i=1;
    while(i<=10)
    {
        printf("%d \n",i);
        i=i+1;
    }
}

while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环 循环体如包括有一个以上的语句,则必须用{}括起来, 组成复合语句。 应注意循环条件的选择以避免死循环。

练习:

练习:计算出1-100之间奇数之和。1+3+5+7....99=?

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
   int i=1,s=0;
   while(i<=100)
   {
         s=s+i;
         i=i+2;
   } 
   printf("s=%d",s);
}

2500

练习:列出1-1000之间所有能同时被3与7整除的数。

三、do while

do-while语句的一般形式为: do { 要重复的语句块; }while(表达式); 其中“要重复的语句块”是循环体 表达式是循环条件 语义是:先执行循环体语句一次,再判断表达式的值,若为真(非0)则继续循环,否则终止循环。

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int i=1,s=0;
    do
    {
        s=s+i;
        i++;
    }while(i<=5);
    printf("%d",s);
}
//i=1 2 3 4 5  6
//s=0 1 3 6 10 15

15

适用于必须要执行一次的应用,如输入一个合格的数字。

#include "stdio.h"
void main()
{
    int n;
    do
    {
        printf("请输入1-7之间的数:");
        scanf("%d",&n);
    }while(n<1||n>7);
}

四、continue

 在for,while,do-while中遇到continue表示结束当次循环,继续下次循环。

#include "stdio.h"
void main()
{
   int i;
   for(i=1;i<=10;i++)
   {
          printf("●");
          printf("□");
   }
}
#include "stdio.h"
void main()
{
   int i;
   for(i=1;i<=5;i++)
   {
          if(i%2==0)
          {
                continue;  //结束当次,继续下一次
          }
          printf("□");
   }
   
   //i=1 2 3 4 5 6
   □□□
}

五、break

 在for,while,do-while,switch中遇到break跳出当前循环。

#include "stdio.h"
void main()
{
   int i;
   for(i=1;i<=5;i++)
   {
          if(i%2==0)
          {
                break;  //结束当前循环
          }
          printf("□");
   }  
}

在无条件循环中退出

#include "stdio.h"
void main()
{
    int i=1,s=0;
    while(1)
    {
        s=s+i;
        i++;
        if(i>100) break;
    }
    printf("%d",s);
}

5050 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

元祖+列表

4656
来自专栏吾爱乐享

java学习之StringBuffer的增删改查功能

1304
来自专栏技术碎碎念

python3 入门 (四) 类与继承

Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。...

35212
来自专栏Esofar 开发日记

JavaScript权威指南 - 数组

JavaScript数组是一种特殊类型的对象。 JavaScript数组元素可以为任意类型,最大容纳232-1个元素。 JavaScript数组是动态的,有...

634
来自专栏加米谷大数据

技术分享 | Python之列表(list)解析

Python内置的一种数据类型是列表(list),list是一种有序的集合,可以随时添加和删除其中的元素,列表中的每个元素都分配一个数字,是它的位置(或者叫索引...

3457
来自专栏java思维导图

【一分钟知识】静态变量和实例变量、构造器

1、静态变量和实例变量 静态变量 被static修饰符修饰的变量,也称为类变量 属于类,不属于类的任何一个对象 一个类不管创建多少个对象,静态变量在内存中有且仅...

35510
来自专栏编程

Python的类和对象

对象=属性(特征)+方法(行为) 类:在python中,把具有相同属性和方法的对象归为一个类(class) self: init()构造方法,只要实例化一个对象...

17910
来自专栏python3

python 字符串常用操作

字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。

711
来自专栏web

js中push(),pop(),unshift(),shift()的用法小结

922
来自专栏从流域到海域

Python tuple(元组)

tuple即元组,与list类似,差别在于tuple中的元素一旦初始化就不可更改,即tuple是操作受限制的list(不能更改)。 list参见:http...

1915

扫码关注云+社区