C语言循环结构综合应用篇(详细案例讲解)

🔄 C语言循环结构综合应用篇(详细案例讲解)

C语言程序设计合集


🧠 一、为什么要做循环综合练习?

循环是C语言最重要的逻辑结构之一。

不管你是在做"九九乘法表"、求平均成绩,还是在物联网项目中采集传感器数据、控制设备动作------

循环都是必不可少的"自动执行器"。

今天,我们通过五个详细案例,让循环逻辑真正"活"起来。


🌟 案例1:右上三角九九乘法表

📋 案例说明

常见的九九表是左下三角,但有时我们希望排成右上格式,让数据更直观。

这就要掌握双层循环 + 控制列数的技巧。


✅ 完整代码

c 复制代码
#include <stdio.h>
int main() {
    printf("=== 右上三角九九乘法表 ===\n");
    for (int i = 1; i <= 9; i++) {
        for (int j = i; j <= 9; j++) {
            printf("%d×%d=%-2d ", i, j, i * j);
        }
        printf("\n");
    }
    return 0;
}

🧩 运行结果(节选)

复制代码
1×1=1  1×2=2  1×3=3  ... 1×9=9
2×2=4  2×3=6  ... 2×9=18
...
9×9=81

💬 思路解析

  • 外层循环控制"行"(从1到9)
  • 内层循环控制"列",从 i 开始
  • %-2d 表示左对齐,占2个字符宽度,表格整齐
  • \n 控制换行

📌 技能点总结:

  • 双重循环嵌套
  • 内外层变量配合输出
  • 格式化输出排版技巧

🌟 案例2:累加与累乘对比

📋 案例说明

输入一个整数 n,计算:

  • 1~n 的累加和(sum)
  • 1~n 的累乘积(product)

✅ 完整代码

c 复制代码
#include <stdio.h>
int main() {
    int n;
    long long sum = 0, product = 1;  // 注意类型

    printf("请输入一个正整数n:");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        sum += i;
        product *= i;
        printf("第%d次:sum=%lld, product=%lld\n", i, sum, product);
    }

    printf("最终结果:\n");
    printf("1~%d的和 = %lld\n", n, sum);
    printf("1~%d的积 = %lld\n", n, product);
    return 0;
}

🧩 运行示例

复制代码
请输入一个正整数n:5
第1次:sum=1, product=1
第2次:sum=3, product=2
第3次:sum=6, product=6
第4次:sum=10, product=24
第5次:sum=15, product=120
最终结果:
1~5的和 = 15
1~5的积 = 120

💬 思路解析

  • sum += i 表示"每次加上 i"
  • product *= i 表示"每次乘以 i"
  • 循环执行 n 次后,得到结果
  • long long 防止整数溢出

📌 技能点总结:

  • 累加与累乘的区别
  • 变量类型选择(防溢出)
  • 循环中的动态输出观察过程

🌟 案例3:斐波那契数列(Fibonacci)

📋 案例说明

数学定义:

F₁=1,F₂=1,Fₙ=Fₙ₋₁+Fₙ₋₂

这是经典的循环生成型问题。


✅ 完整代码

c 复制代码
#include <stdio.h>
int main() {
    int n;
    printf("请输入项数n:");
    scanf("%d", &n);

    int a = 1, b = 1, c;
    printf("前%d项斐波那契数列为:\n", n);
    printf("%d %d ", a, b);

    for (int i = 3; i <= n; i++) {
        c = a + b;
        printf("%d ", c);
        a = b;
        b = c;
    }
    printf("\n");
    return 0;
}

🧩 运行结果(n=10)

复制代码
前10项斐波那契数列为:
1 1 2 3 5 8 13 21 34 55

💬 思路解析

  • ab 保存前两项
  • 每次循环生成新项 c = a + b
  • 滚动更新:a=b, b=c
  • 初始两项单独打印

📌 技能点总结:

  • 序列递推模型
  • 循环变量滚动更新
  • for循环的逻辑积累思维

🌟 案例4:猜数字游戏(while + break)

📋 案例说明

  • 系统随机生成一个1~100的数字
  • 用户不断输入猜测
  • 程序提示"太大"或"太小",直到猜中

✅ 完整代码

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(0));  // 随机种子
    int target = rand() % 100 + 1;
    int guess, count = 0;

    printf("🎮 猜数字游戏开始!(范围1~100)\n");

    while (1) {
        printf("请输入你的猜测:");
        scanf("%d", &guess);
        count++;

        if (guess == target) {
            printf("✅ 恭喜你猜对了!共用了%d次。\n", count);
            break;
        } else if (guess > target) {
            printf("太大了!\n");
        } else {
            printf("太小了!\n");
        }
    }

    printf("游戏结束,答案是:%d\n", target);
    return 0;
}

🧩 示例输出

复制代码
🎮 猜数字游戏开始!(范围1~100)
请输入你的猜测:50
太大了!
请输入你的猜测:30
太小了!
请输入你的猜测:40
✅ 恭喜你猜对了!共用了3次。
游戏结束,答案是:40

💬 思路解析

  • 无限循环 while(1)
  • break 结束游戏
  • rand() % 100 + 1 生成随机数
  • srand(time(0)) 保证每次不同

📌 技能点总结:

  • 循环 + 条件判断 + 随机函数综合应用
  • 实用项目模型(如传感器阈值检测)

🌟 案例5:传感器采样模拟(do-while + continue)

📋 案例说明

模拟物联网设备采样:

连续输入传感器值,过滤掉异常(负数)数据,输入 -1 时结束并计算平均值。


✅ 完整代码

c 复制代码
#include <stdio.h>

int main() {
    float data, sum = 0;
    int count = 0;

    do {
        printf("请输入第%d次采样值(输入-1结束):", count + 1);
        scanf("%f", &data);

        if (data < 0 && data != -1) {
            printf("⚠️ 无效数据(负值),跳过!\n");
            continue;
        }

        if (data != -1) {
            sum += data;
            count++;
        }

    } while (data != -1);

    if (count > 0)
        printf("有效采样%d次,平均值:%.2f\n", count, sum / count);
    else
        printf("未采集到有效数据。\n");

    return 0;
}

🧩 运行示例

复制代码
请输入第1次采样值(输入-1结束):10
请输入第2次采样值(输入-1结束):-5
⚠️ 无效数据(负值),跳过!
请输入第3次采样值(输入-1结束):20
请输入第4次采样值(输入-1结束):-1
有效采样2次,平均值:15.00

💬 思路解析

  • do-while 保证至少执行一次
  • 负数检测与过滤 continue
  • 平均值计算需计数器 count
  • 典型IoT循环采样模型

🧮 六、循环结构一览表

类型 判断位置 是否至少执行一次 适用场景
for 先判断 次数已知
while 先判断 条件驱动
do-while 后判断 ✅ 是 至少执行一次的任务

📌 口诀:

for管次数,while管条件,do-while至少执行一次。


✅ 七、小结

你现在已经学会:

  • 多层循环(如九九乘法表)
  • 动态数据处理与输入控制
  • 随机数与条件判断结合
  • break 与 continue 的灵活使用
  • 实战模拟 IoT 场景

🎯 循环掌握得好,自动化思维就有了!


🔜 下一篇预告

📘 C语言数组入门篇------一次存多个数据!

  • 数组定义与初始化
  • for循环遍历数组
  • 成绩统计与平均计算
  • 数组最大值与最小值

相关推荐
AuroraWanderll2 小时前
类和对象(三)-默认成员函数详解与运算符重载
c语言·开发语言·数据结构·c++·算法
青云交2 小时前
Java 大视界 -- Java+Spark 构建企业级用户画像平台:从数据采集到标签输出全流程(437)
java·开发语言·spark·hbase 优化·企业级用户画像·标签计算·高并发查询
航Hang*2 小时前
第3章:复习篇——第1节:创建和管理数据库
开发语言·数据库·笔记·sql·sqlserver
云栖梦泽2 小时前
鸿蒙原子化服务开发实战:构建免安装的轻量应用
开发语言·鸿蒙系统
恶魔泡泡糖2 小时前
keil4创建工程项目
c语言·单片机
YY&DS2 小时前
《Qt 手写 HTTP 登录服务实战》
开发语言·qt·http
阿华hhh2 小时前
数据结构(树)
linux·c语言·开发语言·数据结构
雪域迷影2 小时前
Windows11中VS2026使用C++ 现代化json库nlohmann的3种方式
开发语言·c++·json
步步为营DotNet2 小时前
深度剖析.NET中HttpClient的请求重试机制:可靠性提升与实践优化
开发语言·php·.net