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

PTA刷题笔记3(微难,有详解)

·7-15 计算圆周率

代码如下:

#include <stdio.h>int main() {double threshold;scanf("%lf", &threshold);double pi_over_2 = 1.0;  // π/2的初始值(第一项1)double term = 1.0;       // 当前项的值int n = 1;               // 当前项的索引while (term >= threshold) {term = term * n / (2 * n + 1);  // 递推计算下一项pi_over_2 += term;n++;}double pi = 2 * pi_over_2;  // 计算π的近似值printf("%.6f\n", pi);       // 输出结果,保留6位小数return 0;
}

·7-16 求符合给定条件的整数集

分析题目

题目要求给定一个不超过6的正整数A,考虑从A开始的连续4个数字(即A, A+1, A+2, A+3),然后输出所有由这4个数字组成的无重复数字的3位数。

例如输入样例是2,那么4个数字是2,3,4,5,然后生成所有可能的3位数排列(排列数P(4,3)=4×3×2=24个)。

解决思路

1. 获取输入的数字A
2. 生成4个连续数字:A, A+1, A+2, A+3
3. 生成所有可能的3位数排列(不能有重复数字)
4. 将结果排序
5. 按要求格式输出(每行6个,空格分隔,行末无空格)

代码如下:

#include <stdio.h>int main() 
{int A;scanf("%d", &A);int digits[4];for (int i = 0; i < 4; i++) {digits[i] = A + i;}int count = 0;for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {if (j == i) continue;for (int k = 0; k < 4; k++) {if (k == i || k == j) continue;int num = digits[i] * 100 + digits[j] * 10 + digits[k];if (count % 6 == 0) {if (count != 0) printf("\n");printf("%d", num);//每行的首个元素} else {printf(" %d", num);//每行剩下的五个元素,注意前面有空格}count++;}}}return 0;
}

代码解释

1. 首先读取输入的整数A
2. 创建一个数组digits存储A开始的4个连续数字
3. 使用三重循环生成所有排列:
   · 第一层循环选择百位数
   · 第二层循环选择十位数(不能与百位数相同)
   · 第三层循环选择个位数(不能与百位或十位数相同)
4. 在输出时控制格式,每6个数字一行,用空格分隔,行末无多余空格
5. 使用count变量跟踪已输出的数字数量来控制换行

·7-17 爬动的蠕虫

代码如下:

#include <stdio.h>int main() {int N, U, D;scanf("%d %d %d", &N, &U, &D);int time = 0;int height = 0;while (1) {// 向上爬height += U;time++;if (height >= N) {break;}// 下滑height -= D;time++;}printf("%d\n", time);return 0;
}

代码说明

1. 输入处理*:使用 scanf 读取三个整数N、U、D,分别代表井深、每分钟上爬距离和每分钟下滑距离。

2. 初始化:
   ·  time 变量记录总时间(分钟)
   ·  height 变量记录蠕虫当前高度

3. 主循环:
   · 每次循环先让蠕虫向上爬U寸,时间增加1分钟
   · 检查是否到达或超过井口(`height >= N`),如果是则跳出循环
   · 如果没有到达井口,则下滑D寸,时间再增加1分钟

4. 输出结果:使用 printf 输出总时间

http://www.xdnf.cn/news/8363.html

相关文章:

  • 自学嵌入式 day 23 - 数据结构 树状结构 哈希表
  • Java集合操作:如何避免并发修改异常
  • PictureThis 解锁高级会员版_v5.3.0 拍植物知名称和植物百科
  • Android屏幕适配利器:Kotlin动态尺寸计算工具类完整封装
  • C++高频面试考点 -- 智能指针
  • Dify1.RAG学习(未完待续)
  • 2025电工杯A题电工杯数学建模思路代码文章教学:光伏电站发电功率日前预测问题
  • 从乳制品行业转型看智能化升级新机遇——兼谈R²AIN SUITE的赋能实践
  • 关于flutter中Scaffold.of(context).openEndDrawer();不生效问题
  • Git全流程操作指南
  • 《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
  • Flink集成资源管理器
  • 数据可视化利器 - Grafana 与 Prometheus 联手打造监控仪表盘
  • HTTP 与 HTTPS 深度解析:原理、实践与大型项目应用
  • 【昇腾开发者训练营:Dify大模型部署实战】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型
  • 跟Gemini制作PPT:图标的搜索
  • 静默战场:eBay瑞士站如何用“黄金用户”策略改写跨境电商价值逻辑
  • 怎么判断一个Android APP使用了Cocos 这个跨端框架
  • 图解深度学习 - 人工智能、机器学习和深度学习
  • 如何设置名称服务器
  • 字节跳动旗下火山引擎都覆盖哪些领域
  • IP 地址反向解析(IP反查域名)的原理详解
  • 【黑马JavaWeb+AI知识梳理】后端Web基础03 - MySQL概述
  • Mybatis-入门程序、 数据库连接池、XML映射配置文件、MybatisX
  • springboot集成日志配置文件
  • rac-rac dg 用role自动启动service
  • 青少年编程与数学 02-020 C#程序设计基础 03课题、开始编程
  • 【Python正则表达式终极指南】从零到工程级实战
  • Spring Boot与Kafka集成实践:从入门到精通
  • AOP的代理模式