C语言循环学习

server/2024/11/14 15:19:36/

作为初学者,学习C语言中的循环结构是非常重要的,它们能让你轻松地重复执行代码。在C语言中,常用的循环结构主要有for循环和while循环。我们将从基本概念开始,逐步讲解如何使用这两种循环,并通过示例帮助你理解和练习。

1. 循环的基本概念

循环用于重复执行某段代码,直到满足特定的条件。在C语言中,有三种主要的循环结构:

  • for循环:当你知道循环的次数时,通常使用for循环。
  • while循环:当你不确定需要执行多少次循环,只要条件为真时就一直循环。
  • do-while循环:和while类似,但至少会执行一次。
循环的组成部分:
  1. 循环初始化:初始化控制变量,用于控制循环的执行。
  2. 循环条件:每次循环开始前检查的条件,决定是否继续循环。
  3. 循环体:需要重复执行的代码。
  4. 循环更新:每次循环结束后更新控制变量,以保证循环能够最终结束。

2. for 循环

for循环的语法:
for (初始化; 条件; 更新) {// 循环体
}

例子:

#include <stdio.h>int main() {// 使用for循环打印1到5for (int i = 1; i <= 5; i++) {printf("%d\n", i);}return 0;
}
  • 初始化int i = 1,初始化循环变量i为1。
  • 条件i <= 5,在i小于或等于5时继续循环。
  • 更新i++,每次循环结束后i自增1。
(1) for循环中的常见操作
  • 遍历数组for循环非常适合遍历数组中的每个元素。

    #include <stdio.h>int main() {int arr[5] = {10, 20, 30, 40, 50};for (int i = 0; i < 5; i++) {printf("%d\n", arr[i]);}return 0;
    }
    
  • 嵌套for循环:用于遍历多维数组或实现复杂的嵌套逻辑。

    #include <stdio.h>int main() {for (int i = 1; i <= 3; i++) {for (int j = 1; j <= 3; j++) {printf("%d * %d = %d\n", i, j, i * j);}}return 0;
    }
    

3. while 循环

while循环的语法:
while (条件) {// 循环体
}

例子:

#include <stdio.h>int main() {int i = 1;// 使用while循环打印1到5while (i <= 5) {printf("%d\n", i);i++;  // 更新控制变量,防止死循环}return 0;
}
  • 条件i <= 5,当条件为真时,循环会一直执行。
  • 更新i++,在每次循环结束时更新i,以避免死循环。
(1) while循环中的常见操作
  • 读取用户输入while循环常用于处理用户输入,直到满足特定条件为止。

    #include <stdio.h>int main() {int num;printf("请输入一个正数(输入0结束循环):\n");while (1) {scanf("%d", &num);if (num == 0) {break;  // 如果输入0,退出循环}printf("你输入的是: %d\n", num);}return 0;
    }
    
  • 处理未知次数的循环:当不知道需要循环多少次时,while非常有用。

    int i = 10;
    while (i > 0) {printf("%d\n", i);i--;
    }
    

4. do-while 循环

do-while循环的语法:
do {// 循环体
} while (条件);

例子:

#include <stdio.h>int main() {int i = 1;// 使用do-while循环至少执行一次,然后判断条件do {printf("%d\n", i);i++;} while (i <= 5);return 0;
}
  • 区别do-while循环至少执行一次,因为条件检查是在循环体执行之后进行的。

5. 循环的控制

(1) break 语句

break用于提前退出循环。当满足某个条件时,可以使用break跳出循环。

例子:

#include <stdio.h>int main() {for (int i = 1; i <= 10; i++) {if (i == 5) {break;  // 当i等于5时,跳出循环}printf("%d\n", i);}return 0;
}
(2) continue 语句

continue用于跳过当前循环的剩余部分,直接进入下一次循环。

例子:

#include <stdio.h>int main() {for (int i = 1; i <= 5; i++) {if (i == 3) {continue;  // 跳过本次循环,当i为3时,不输出}printf("%d\n", i);}return 0;
}

6. 循环练习

(1) 计算1到100的和

编写一个程序,使用for循环计算1到100的所有整数之和。

#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的和为: %d\n", sum);return 0;
}
(2) 打印乘法表

使用嵌套for循环打印九九乘法表。

#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d * %d = %d\t", i, j, i * j);}printf("\n");}return 0;
}
(3) 求数字的阶乘

编写一个程序,使用while循环计算一个给定数的阶乘。

#include <stdio.h>int main() {int num, fact = 1;printf("请输入一个正整数: ");scanf("%d", &num);int i = 1;while (i <= num) {fact *= i;  // fact = fact * i;i++;}printf("%d 的阶乘是: %d\n", num, fact);return 0;
}

7. 学习技巧

  • 多练习循环的使用:可以从简单的for循环开始,逐步掌握while循环的条件判断。
  • 注意控制变量的更新:确保循环体内的变量适当更新,防止死循环。
  • 调试循环:在循环内打印控制变量的值,可以帮助你更好地理解循环的执行过程。

通过这些基础内容和练习,你应该能逐步掌握C语言中的forwhile循环。在实际编程中,选择适合的循环结构并灵活运用是非常重要的。


http://www.ppmy.cn/server/119820.html

相关文章

解决ubuntu22.04 gnome-terminal 无法启动的问题

22.04下面默认的python 版本是3.10. 如果你安装了3.8或其它版本&#xff0c;尽量不要去ln -s python3.8 python3修改默认python3版本&#xff0c;不然Terminal会打不开。猜测Terminal可能用到了python的_gi这个库。 可以在xterm或putty远程连上&#xff0c;输入 sudo gnome-te…

96 kHz、24bit 立体声音频ADC芯片GC5358描述

概述&#xff1a; GC5358 是一款高性能、宽采样率、立体声音频模数转换器。其采样率范围是8KHz~96KHz&#xff0c;非常适合从消费级到专业级的音频应用系统。单端模拟输入不需要外围器件。GC5358 音频有两种数据格式&#xff1a;MSB对齐和 I2S 格式&#xff0c;和各种如 DTV、D…

98-策略模式的理解

‌策略模式是一种软件设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换。这种模式允许算法的变化不会影响使用算法的客户端&#xff0c;通过将使用算法的责任和算法的实现分割开来&#xff0c;并委派给不同的对象对这些…

java日志框架之JUL(Logging)

文章目录 一、JUL简介1、JUL组件介绍 二、Logger快速入门三、Logger日志级别1、日志级别2、默认级别info3、原理分析4、自定义日志级别5、日志持久化&#xff08;保存到磁盘&#xff09; 三、Logger父子关系四、Logger配置文件 一、JUL简介 JUL全程Java Util Logging&#xff…

ES机制原理

它们内部是如何运行的&#xff1f; 主分片和副本分片是如何同步的&#xff1f; 创建索引的流程是什么样的&#xff1f; ES 如何将索引数据分配到不同的分片上的&#xff1f;以及这些索引数据是如何存储的&#xff1f; 为什么说 ES 是近实时搜索引擎而文档的 CRUD (创建-读取…

蓝桥杯—STM32G431RBT6(LCD的液晶显示,由原理及实践,配置及lcd函数)

目录 一、LCD的原理&#xff08;了解&#xff09; LCD属性 OLED与LCD对比 二、使用步骤 1.引入库 2.代码部分 code.c&#xff08;含详解&#xff09; code.h main.c 效果展示 开源代码&#xff1a; 一、LCD的原理&#xff08;了解&#xff09; LCD属性 LCD 是英文 “…

OpenCV class2-C#+winfrom显示控件使用窗口大小并内存管理

一.控件效果说明 二.代码声明&#xff08;已经循环读取10000次&#xff09; 全局 OpenCvSharp.Point point new OpenCvSharp.Point(0, 0); OpenCvSharp.Size size2; Mat src new Mat(); 初始化 size2 new OpenCvSharp.Size(pictureBox1.Size.Width, pictureBox1.Size.Hei…

SpringBoot 数据库表结构文档生成

官方地址&#xff1a;https://github.com/pingfangushi/screw screw 螺丝钉&#xff0c;支持以下数据库 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB&#xff08;2016&#xff09; 生产文档支持 html word markdown 开始 添加依赖 <!-- 螺丝钉 --><…