嵌入式初学-C语言-十

#接嵌入式初学-C语言-九#

循环结构

直到型循环的实现

do..while

语法:

do
{
循环体;
} while(循环条件);

说明:

1. 循环条件的返回值必须是布尔类型,在C语言中,布尔类型为真使用 非0 来表示,布尔类型为假使 用 0 表示。

2. {} 包起来的内容整体称之为为 循环体 。

3. 我们要在 循环体 中控制 循环条件 的变化,否则会产生死循环。

执行过程:

特点:

        先执行,后判断,循环体语句至少执行一次。

案例:

/*
    需求:do..while案例:求1~100之间奇数的累加和
*/

#include <stdio.h>

int main()
{
    // 创建一个变量,用来存储累加和
    int sum = 0;
    // 创建循环变量,默认值1
    int i = 1;
    do
    {
        // 判断i是否是奇数
        if(i % 2 != 0)
        {
            sum += i;
        }
        i++;// 改变循环变量的值
    }while(i <= 100);
    printf("1~100之间奇数的累加和是:%d\n",sum);
return 0;
}

循环的嵌套

3种循环(while、do……while、for)可以互相嵌套。在前一个循环结构的内部又存在一个完整的循环 结构,如:

案例:

/**
    * 需求:嵌套for循环案例-求100~200之间的所有素数
*/

#include <stdio.h>

int main()
{
    int num = 100;// 存放100~200之间的自然数
    int i = 2;// 循环变量,默认从2开始,因为自然数除以1没有意义 102,100~102, 102%100,102%101
    int isPrime = 1;// 用来记录1~自身之间能整除的次数 6, 2~5, 6%2,6%3,6%4,6%5
    
    // 第1层for循环:生成100~200之间的自然数
    for(;num <= 200; num++)
    {
        // 默认是素数
        isPrime = 1;
        // 第2层循环,生成 2~自身-1的自然数,用于和自身校验,是否能够整除,如果有1个能被整除,就说明不
是素数
        for(i = 2; i < num -1; i++)
        {
            if(num % i == 0)
            {
                isPrime = 0;// 不是素数
            }
        }
        if(isPrime) // 条件判断:isPrime == 1 缩写 isPrime
        {
            printf("%d ",num);
        }
    }
    printf("\n");

    return 0;
}

循环结构的典型应用场景

求累和:举例 1+2+3+4+..+100的和

求累乘:举例 1*2*3*4*..*100的积

求均值:举例: (1+2+3+4+..+100) / 100的值

求极值:举例: 12,34,55,2,66中的最大值或者最小值

元素遍历:常用于数组元素的遍历,比如:从 [1,2,3,4,5] 获取每一个元素。

基础算法模型

1. 累加和

        定义一个变量(sum),并赋初值为0;

        用该变量累加(+=)每一个数据项(i)

        当访问完每一个数据项,此时该变量的取值就是累加和的结果。

2. 累乘

        定义一个变量,并赋初值为1;

        用该变量累乘(*=)每一个数据项;

        当访问完每一个数据项,此时该变量的取值就是累乘的结果。

3. 极值【知识点:数组】

        定义一个变量,并赋初值为第一个数据项

        从第二个数据项开始,一次性与该变量进行比较,如果大于/小于该变量,则将当前数据项的数 据赋值给该变量。

        当访问完每一个数据项,此时该变量的取值就是求极值的结果。

补充

什么是素数

        素数也被称作质数,只能被1和自身整除的数就叫做素数。

例题:

1. 计算n以内所有正奇数的和 ? n值通过键盘输入

  1 /*
  2  需求:计算n以内所有正奇数的和 ? n值通过键盘输入
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int sum = 0;
  9     int a = 0;
 10 
 11     printf("请输入一个正值:");
 12     scanf("%d",&sum);
 13 
 14     for(int i = 1;i <= sum;i++)
 15     {
 16         if(i % 2 != 0)
 17         {
 18             a += i;
 19         }
 20     }
 21 
 22     printf("正奇数和为:%d\n",a);
 23 
 24     return 0;
 25 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值