当前位置: 首页 > news >正文

掌握while循环:C语言编程基础

目录

一、while循环简介

二、if和while的对比

语法结构对比:

实际代码对比:

三、while语句的执行流程

while循环的执行流程如下:

流程图表示:

四、while循环实践

练习:在屏幕上打印1~10的值

五、进阶练习

题目:输入一个正整数,逆序打印这个整数的每一位

解题思路:

参考代码:

代码改进建议:


一、while循环简介

        C语言提供了3种循环语句,while循环是其中最基础的一种。while语句的语法结构与if语句非常相似,但功能却大不相同。


二、if和while的对比

语法结构对比

if(表达式)语句;while(表达式)语句;  // 如果循环体想包含更多语句,可以加上大括号

实际代码对比

// 代码1 - if语句
#include <stdio.h>
int main()
{if(1)printf("hehe\n"); // if条件满足,只打印一次hehereturn 0;
}// 代码2 - while语句
#include <stdio.h>
int main()
{while(1)printf("hehe\n"); // while条件满足,会不断循环打印hehereturn 0;
}

关键区别:if语句只会执行一次条件满足的代码,而while语句会重复执行,直到条件不再满足。


三、while语句的执行流程

while循环的执行流程如下:

  1. 首先判断表达式值:

    • 如果值为0(假),循环立即结束

    • 如果值不为0(真),执行循环体语句

  2. 循环体执行完毕后,再次判断表达式

  3. 重复上述过程,直到表达式值为0

流程图表示:


四、while循环实践

练习:在屏幕上打印1~10的值

#include <stdio.h>
int main()
{int i = 1;          // 初始化计数器while(i <= 10)      // 循环条件{printf("%d ", i); // 打印当前值i = i + 1;      // 更新计数器}return 0;
}

程序分析:

  1. 初始化i为1

  2. 检查i是否<=10

  3. 如果条件为真,执行循环体(打印i并使i增加1)

  4. 重复步骤2-3,直到i>10时循环结束


五、进阶练习

题目:输入一个正整数,逆序打印这个整数的每一位

示例:

  • 输入:1234,输出:4 3 2 1

  • 输入:521,输出:1 2 5

解题思路

  1. 获取最低位:使用n%10运算,如1234%10=4

  2. 去掉最低位:使用n/10运算,如1234/10=123

  3. 循环上述两步,直到n变为0

参考代码

#include <stdio.h>
int main()
{int n = 0;printf("请输入一个正整数:");scanf("%d", &n);while(n != 0){printf("%d ", n % 10); // 打印当前最低位n /= 10;              // 去掉已经处理的最低位}return 0;
}

代码改进建议

  1. 添加输入验证,确保输入的是正整数

  2. 可以在最后添加换行,使输出更整洁

  3. 考虑处理n=0的特殊情况

#include <stdio.h>
int main()
{int n = 0;printf("请输入一个正整数:");scanf("%d", &n);if(n == 0) {printf("0\n");return 0;}if(n < 0) {printf("输入必须是正整数!\n");return 1;}while(n != 0){printf("%d ", n % 10);n /= 10;}printf("\n"); // 添加换行return 0;
}
http://www.lryc.cn/news/617565.html

相关文章:

  • [动态规划]最长公共子序列(LCS)
  • golang 基础案例_01
  • Go选手如何快速上手第三方库
  • Springboot-vue 地图展现
  • JDK21虚拟线程和 Golang1.24协程的比较
  • 《姜妮与Veda的最后一次传输》
  • 李宏毅2025《机器学习》-第十讲:AI“思想钢印”:深入解析大模型的知识编辑技术
  • 秒懂边缘云|1分钟了解边缘安全加速 ESA
  • 机器学习——K-means聚类
  • 第9节 大模型分布式推理核心挑战与解决方案
  • 数据备份与进程管理
  • 机器学习:基于OpenCV和Python的智能图像处理 实战
  • 芯片设计流程
  • C# 异步编程(计时器)
  • 【C++】封装哈希表模拟实现unordered_set和unordered_map
  • Android 16 的用户和用户组定义
  • 基于倾斜摄影三维模型影像提取水面
  • Spring源码解析 - SpringApplication run流程-prepareContext源码分析
  • 了解不同电磁仿真类型中的电容报告
  • 某地渣库边坡自动化监测服务项目
  • GDB调试 core dump 文件与栈溢出分析
  • 农业气象站的应用场景拓展
  • 学习观察和行动:机器人操作中任务-觉察的视图规划
  • 2025年渗透测试面试题总结-13(题目+回答)
  • Python训练营打卡 DAY 33 MLP神经网络的训练
  • 首涂模板第45套主题2.0修正版苹果CMS模板奇艺主题二开源码
  • 【AxureMost落葵网】CRM客户关系管理原型系统-免费
  • MD5:理解MD5 / MD5核心特性 / MD5 在前端开发中的常见用途 / 在线生成MD5 / js-md5
  • 【Kafka系列】第三篇| 在哪些场景下会选择使用 Kafka?
  • 【车联网kafka】Kafka核心架构与实战经验(第三篇)