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

NO.15十六届蓝桥杯备战|while循环|六道练习(C++)

while循环

while语法形式

while 语句的语法结构和 if 语句⾮常相似,但不同的是 while 是⽤来实现循环的, if 是⽆法实现循环的。
下⾯是 while 循环的语法形式:

//形式1  
while ( 表达式 )语句;  //形式2
//如果循环体想包含更多的语句,需要加上⼤括号  
while ( 表达式 )  
{  语句1;语句2; ...  
}
执⾏流程

![[Pasted image 20250211171920.png]]

⾸先上来就是执⾏判断表达式,表达式的值为 0 ,循环直接结束;表达式的值不为 0 ,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。

实践

题⽬
使⽤ while 循环在屏幕上打印1~10的值

#include <iostream>
using namespace std;int main()
{int i = 1;while (i <= 10){cout << i << " ";i++;}return 0;
}

![[Pasted image 20250211172629.png]]

练习

反向输出一个四位数
#include <iostream>
using namespace std;char a, b, c, d;int main()
{cin >> a >> b >> c >> d;cout << d << c << b << a;return 0;
}
#include <iostream>
using namespace std;int n;int main()
{cin >> n;while (n){cout << n % 10;n /= 10;}return 0;
}
  1. 要想得到 n 的最低位,可以使⽤ n % 10 的运算,得到的余数就是最低位,如:1234 % 10 得到4
  2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n = n / 10 操作就可以去掉最低位的,如: n=1234/10 得到 123 ,123相较于1234就去掉了最低位, 123%10 就得到倒数第⼆位 3 。
  3. 循环1和2两个步骤,在n变成0之前,就能到所有的位。
    1234%10 = 4
    1234/10 = 123
    123%10 = 3
    123/10 = 12
    12%10 = 2
    12/10 = 1
    1%10 = 1
    1/10 = 0
数位之和
#include <iostream>
using namespace std;int n;int main()
{int sum = 0;cin >> n;while (n){sum += n % 10;n /= 10;}cout << sum << endl;return 0;
}
小乐乐求和
#include <iostream>
using namespace std;int n;int main()
{cin >> n;int i = 1;long long sum = 0;while (i <= n){sum += i;i++;}cout << sum << endl;return 0;
}
#include <iostream>
using namespace std;long long n;int main()
{cin >> n;long long sum = 0;sum = n * (n + 1) / 2;cout << sum << endl;return 0;
}

注意数据范围,合理设置变量数据类型,1 ≤ n ≤ 10^9,那么求和的结果在int类型的变量中是⽆法保存的。

B2078 含 k 个 3 的数
#include <iostream>
using namespace std;long long m, k;int main()
{cin >> m >> k;long long i = 0;while (m){if (m % 10 == 3)i++;m /= 10;}if (i == k)cout << "YES" << endl;elsecout << "NO" << endl;return 0;
}

还是数据范围的问题,使⽤long long类型是合适的。

B2077 角谷猜想 - 洛谷
#include <iostream>
using namespace std;
#include <cstdio>long long x;int main()
{cin >> x;while (x != 1){if (x % 2 == 1){printf("%lld*3+1=%lld\n", x, x * 3 + 1);x = x * 3 + 1;}else{printf("%lld/2=%lld\n", x, x/2);x /= 2;}}cout << "End" << endl;return 0;
}
#include <iostream>  
using namespace std;  
int main()  
{  long long n = 0;  cin >> n;  while (n != 1)  {  if (n % 2 == 1)  {  cout << n << "*3+1=" << n * 3 + 1 << endl;  n = n * 3 + 1;  }  else  {  cout << n << "/2=" << n / 2 << endl;  n /= 2;  }  }  cout << "End" << endl;  return 0;  
}
B2080 计算多项式的值
#include <iostream>
using namespace std;
#include <cstdio>double x;
int n;int main()
{cin >> x >> n;double ret = 1;double tmp = 1;while (n--){tmp *= x;ret += tmp;}printf ("%.2lf\n", ret);return 0;
}
http://www.lryc.cn/news/535731.html

相关文章:

  • DeepSeek 从入门到精通学习指南,2025清华大学《DeepSeek从入门到精通》正式发布104页pdf版超全解析
  • 2025年SEO自动优化工具
  • KEPServerEX 的接口类型与连接方式的详细说明
  • AGI时代的认知重塑:人类文明的范式转移与思维革命
  • OmniManip:以目标为中心的交互基元作为空间约束实现通用机器人操作
  • 论文第二次阅读笔记
  • 【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪
  • 系统漏洞扫描服务:安全风险识别与防护指南
  • 2.Excel:滨海市重点中学的物理统考考试情况❗(15)
  • 使用 React 16+Webpack 和 pdfjs-dist 或 react-pdf 实现 PDF 文件显示、定位和高亮
  • 驱动开发系列35 - Linux Graphics GEM Buffer Object 介绍
  • Java常见的异常类有哪些?
  • 清华大学新闻与传播学院沈阳团队出品的《DeepSeek:从入门到精通》104页PDF
  • 增量hdfs数据追平
  • Linux高并发服务器开发 第十七天(管道缓存区查询大小 管道的优劣 命名管道mkfifo 建立释放映射区mmap/munmap 匿名映射 进程间的通信)
  • C语言常见概念
  • AI代码生成器如何重塑前端开发的工作环境
  • 设计模式-结构型-外观模式
  • 8.flask+websocket
  • ARM Cortex-M3/M4 权威指南 笔记【二】架构
  • HCIA项目实践--静态路由的拓展配置
  • STL中list的模拟实现
  • 计算机网络知识速记:HTTP1.0和HTTP1.1
  • Apache Kafka 中的认证、鉴权原理与应用
  • DeepSeek自然语言处理(NLP)基础与实践
  • 激光工控机在精密制造中的应用与优势
  • Docker换源加速(更换镜像源)详细教程(2025.2最新可用镜像,全网最详细)
  • 12.14 算法练习
  • ASP.NET Core SignalR的分布式部署
  • Express 中间件