c语言lesson04

循环结构特点:在给定的条件成立时,反复执行某程序段,直到条件不成立为止.
一、while循环
while (条件表达式) {

循环语句;

}

如果条件表达式为真,会循环执行while的语句块,一旦条件表达式为假的时候,循环停止.
(1) while 语句中,表达式通常为条件或逻辑表达式,也可以是其他类型的表达式,只要表达式的值为非0,都会执行循环体语句.
(2) 循环体语句可以是一条,也可以是多条.如果是多条需要加上 { } 构成符合语句,因为while 语句到第一个分号处结束.

随机数:
arc4random()  返回一个随机数
如果要随机一个[a,b]范围内的整数
公式: arc4random() % (b - a + 1) + a

二 、do…while 循环
do {

  循环语句;

} while (条件表达式);
do …. while 语句的执行特点是: 先执行循环体,再判断循环条件,直到条件不满足的时候,循环结束.
与 while 语句的执行特点刚好相反.
案例:密码登陆,超过三次不能再输入登录信息

三 、for 循环
for 语句是c语言中使用最灵活、功能最强大的循环语句。for 语句不仅可以用于循环次数已经确定的情况,也可以用于循环次数不确定、仅给出循环条件的情况。
for (循环变量初始化 ; 循环条件 ; 循环增量)
 {

  语句(循环体);

  }
循环条件为真的时候,执行循环体.通常给循环变量加条件来控制循环的结束
注意:不要在 for () 后面加 ; ,会导致循环体为空。循环变量初始化可以省略,但其后面的分号不能省略



四 、break
在 switch 语句中我们接触过 break,break 是跳出 switch 语句块,执行 switch 语句块下面的语句
在循环中, break 主要作用是为了跳出本次循环,执行循环后边的语句,通常 break 语句总是与 if 语句连在一起使用

五、 continue
continue 语句会跳出某次循环的部分内容,继续下一次循环,不会结束循环.

作业

1.随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,最小数

int num1 = 0,max = 0,min = 100;

    for (int i = 1; i < 21; i++)

    {

        num1 = arc4random() % 91 + 10;

        printf("%d  ",num1);

        if (num1 > max )

        {

            max = num1;

            

        }

        //min = min > num1 ? num1 : min;

        if (num1 < min)

        {

            min = num1;

        }

        

    }

    printf("\nmax=%d  min=%d\n",max,min);

2.编程将0-1000所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。

int i=0;

    for (int num2 = 100; num2 < 1000; num2++)

    {

        int a = num2 % 10,b = num2 / 10 % 10,c = num2/100;

        if (a * a * a + b * b * b + c * c * c == num2)

        {

            printf("%d  ",num2);

            i++;

        }

    }

    printf("\n总个数为% d\n",i);

3.输入两个数,求最大公约数和最小公倍数。

int a = 0,b = 0,c = 0,d = 0;

    printf("输入两个数:");

    scanf("%d%d",& a,& b);

    d = a * b;

    if (a<b)

    {

        a = a + b;

        b = a - b;

        a = a - b;

    }

    while (b != 0)

    {

        c = a % b;

        a = b;

        b = c;

    }

    printf("最大公约数为:%d\n最小公倍数为:%d\n",a,d/a);

4.一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高。

float H = 100,h = 0,s = H;

    for (int n = 1; n < 11; n ++)

    {

        s = s + 2*h;

        H = H/2;

        h = H;

    }

    printf("小球第十次落地式共经过%f\n第十次反弹%f\n",s,h);

5.已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。 

int a1 = 0,b1 = 0,c1 = 0;

    for (a1 = 1; a1 < 10; a1 ++)

    {

        for (b1 = 0; b1 <10; b1 ++)

        {

            for (c1 = 1; c1 < 10; c1 ++)

            {

                if (101 * a1 + 20 * b1 + 101 * c1 == 1333)

                {

                    printf("a=%d b=%d c=%d \n",a1,b1,c1);

                }

                

            }

        }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值