首页 > 其他分享 >C语言7~8 DAY

C语言7~8 DAY

时间:2024-07-31 09:28:10浏览次数:18  
标签:循环体 变量 int C语言 while 循环 100 DAY

循环结构

什么是循环

代码的重复执行,就叫做循环。

循环的分类

  • 无限循环:程序设计中尽量避免无限循环。(程序中的无限循环必须可控)

  • 有限循环:循环限定循环次数或者循环的条件。

循环的构成

  • 循环体

  • 循环条件

当型循环的实现

while

语法:

while(循环条件)
{
    循环语句;
}

说明

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

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

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

执行过程:

特点:

先判断,后执行,循环体语句有可能一次都不执行。

案例:

/*
需求:while循环案例:如何编程来计算1 + 2 + 3 + … + 100?
*/
#include <stdio.h>
int main()
{
    // 定义一个变量,保存累加和
    int sum = 0;
    // 定义一个循环变量
    int i = 1;
    while(i <= 100) // 循环条件,这里可以有关系表达式、逻辑表达式,表达式运算结果是boolean(1,0)
    {
        // 累加计算
        // sum = sum + i;
        sum += i;
        // 给循环变量赋值,用来影响循环条件
        i++;
    }
    printf("1~100的累加和是:%d\n",sum);
    return 0;
}

案例:

/*
需求:while循环案例-计算1~100之间的偶数和,也就是2+4+6+8+..+100的累加和
*/
#include <stdio.h>
int main()
{
    // 创建一个变量,用来存放累加和
    int sum = 0;
    // 创建循环变量,初始值2
    int i = 2;
    while(i <= 100)
    {
        // 排除奇数
        if( i % 2 == 0) // 表示能被2整除,说名这个数是偶数
        {
            sum += i;
        }
        i++;// 改变循环变量的值,此时一定要注意这句代码的位置
    }
    printf("1~100之间的偶数的累加和是:%d\n",sum);
    return 0;
}

死循环

while(1) // 我们会在死循环进行必要的限制

for..

语法:

for(①表达式1;②表达式2;③表达式3)
{
    ④循环体语句;
}

说明:

  1. () 中可以只保留两个分号,举例: (;;)

  2. ① 是循环变量,我们需要赋初值,循环变量可以是列表,多个循环变量使用逗号分隔,举例: int i=0,j=0

  1. ② 是循环条件,用来限制循环的次数,循环条件支持关系表达式,如果加入逻辑表达式,会变成复合表达式,举例: i < 10 && j < 10

  1. ③ 改变循环条件,支持列表,这里可以使用赋值表达式,举例: i++,j++

  2. 执行顺序:①②④③ --> ②④③ --> ②④③ ... --> ②,这里①只执行1次。

执行过程:

特点:

先判断,后执行,循环体语句有可能一次都不执行。

案例:

/**
* 需求:for循环案例-求1~100之间的偶数和
*/
#include <stdio.h>
// while实现
void while_test()
{
    int sum = 0;
    int i = 1;
    while(i <= 100)
    {
        if(i % 2 == 0)
        {
            sum += i;
        }
        i++;
    }
    printf("while实现:1~100之间的偶数和:%d\n",sum);
}
// for实现
void for_test()
{
    int sum = 0;
    for(int i = 1;i <= 100;i++) // 死循环表示:while(1)、for(;;)
    {
        if(i % 2 == 0)
        {
            sum += i;
        }
    }
    printf("for实现:1~100之间的偶数和:%d\n",sum);
}
int main()
{
    while_test();
    for_test();
    
    return 0;
}

案例:

/*
需求:for案例-用户可通过键盘录入一个整数n,用来作为阶乘的最高位数
*/
#include <stdio.h>
#include <math.h>
int main()
{
    int n = 1;// 接受控制台输入,作为阶乘最高位
    int r = 1;// 用来接收计算结果
    printf("请输入一个整数:\n");
    scanf("%d",&n);
    // 循环实现阶乘
    for(int i = 1;i <= fabs(n);i++)
    {
        r *= i;
    }
    printf("1~%d之间的阶乘的结果是:%d\n",n,r);
    return 0;
}

总结

  • for语句使用语法规则上,降低/避免因为忘记循环条件更新操作,而引起的产生无限循环的几率。

  • 应用场合:for语句往往应用于循环次数事先可以确定的场景。

死循环

for(表达式1;;表达式3);
​
for(;;);

循环实现的三要素

  • 循环变量初始化

  • 循环条件

  • 循环变量更新

案例:

/*
需求:for案例-求Fibonacci数列前20个数。
*/
#include <stdio.h>
int main()
{
    int f1 = 1;// 前一个数,默认是1,因为第1个是1
    int f2 = 1;// 后一个数,默认是1,因为第2个是1
    int i = 1;// 循环变量
    for(;i <= 20;i++)
    {
        printf("%12d%12d",f1,f2);
        // 一行显示两个数,每两个换一行
        if(i % 2 == 0)
        {
            printf("\n");
        }
        f1 = f1 + f2; // f1 = 2 = 1+1
        f2 = f2 + f1; // f2 = 3 = 1+2
    }
    return 0;
}

直到型循环的实现

do..while

语法:

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

说明:

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

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

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

执行过程:

特点:

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

案例:

/*
需求: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)

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

  1. 累乘

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

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

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

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

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

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

  • 据赋值给该变量。

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

补充

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

标签:循环体,变量,int,C语言,while,循环,100,DAY
From: https://blog.csdn.net/2303_76763383/article/details/140813919

相关文章

  • C语言6 DAY
    分支结构分支结构:又被称为选择结构。概念选择结构:根据条件成立与否,选择相应的操作。条件构建关系表达式:含有关系运算符的表达式(>,<,>=,<=,!=,==)逻辑表达式:含有其逻辑运算符的表达式(&&,||,!),往往是用来构建复杂的符合条件,比如:if(year%100==0&&year%4!=0)//既有关系表达式......
  • 代码随想录 day40 打家劫舍 及其变体
    打家劫舍打家劫舍解题思路动态规划解决问题,通过前两个值决定第三个值,需要注意的是初始值的选择,第二个的值是取前两个数中较大的,这样是为了保证跳过不需要取的值知识点动态规划心得初始值的选择没有考虑到,其余的都写出来了打家劫舍二打家劫舍二解题思路前一题的改进,只......
  • 代码随想录算法训练营Day0| LeetCode704: 二分查找
    LeetCode704二分查找先看了一下数组理论基础:数组基础题目链接:704.二分查找啥也没看,凭感觉直接上手:classSolution(object): defsearch(self,nums,target): fornuminnums: ifnum==target: returnnums.index(num) break return-1通过倒是......
  • 嵌入式学习第12天——C语言循环结构
    循环结构什么是循环代码的重复执行,就叫做循环。循环的分类无限循环:程序设计中尽量避免无限循环(程序中的无限循环必须可控)。有限循环:循环限定循环次数或者循环的条件。循环的构成循环体循环条件当型循环的实现while语法: while(循环条件) { 循环语句;......
  • C语言——数组和排序
    C语言——数组和排序数组数组的概念数组的初始化数组的特点排序选择排序冒泡排序插入排序二分查找数组数组的概念数组是一组数据;数组是一组相同类型的数据或变量的集合;应用场景:用于批量的处理多个数据;语法:类型说明符数组名[常量表达式]类型说明符也就......
  • C语言程序设计(初识C语言前部分)
    新晋大学生计算机专业中的小小准程序员学习小笔记一,什么是C语言C语言是一门通用计算机编程语言,广泛用于底层开发,通俗的说就是人与计算机交流的计算机语言之一。底层开发就是指上图的下层(底层)部分。美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语......
  • 数组及数组JVM内存划分day4
    java中第一个存储数据的容器:数组特点:1、数组的长度大小是固定的2、同一个数组中,存储的元素数据类型是一样的数组的定义语句格式:数据类型[]数组名;举例:int[]arr;//定义了一个可以存储int类型的一维数组,数组名叫做arr......
  • C语言理解——static、extern等
    目录1、static修饰局部变量2、static修饰全局变量3、static修饰函数4、extern修饰变量或函数5、register修饰变量6、const修饰变量7、typedef起别名8、#define文本替换1、static修饰局部变量普通的局部变量创建后是放在栈区中,这种局部变量进入作用......
  • 嵌入式day14
    数组的遍历(指针)迭代器([begin,end]):通过前一个元素找到了下一个元素(++),基于数组的有序性递归调用逆序:迭代器选择排序:迭代器冒泡排序:迭代器插入排序:快排(qsort):先设置基准数(begin),从右往左找,第一个比基准数小的数,从左往右找,第一个比基准数大的数,互换两个数,重复刚才的操作,......
  • 嵌入式day13
    指针地址和指针的概念指针是用来装地址的数据类型,其是一个变量变量的地址和指向变量的指针变量一般形式:指针变量名符合标识符定义的一般规则int*p:*为类型标识符指针变量p指向i   整型是用来装整数的数据类型;   指针是用来装地址的数据类型希望......