2016年海淀区信息学竞赛小学组详细答案

2023-10-15 02:50

本文主要是介绍2016年海淀区信息学竞赛小学组详细答案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 价钱统计

分析
无论用printf还是用setprecision,都无法达到四舍五入的结果。

#include <iostream>
#include <cstdio>
#include <iomanip>
using namespace std;int main()
{printf("%.1f\n", 1.15);printf("%.1f\n", 1.25);printf("%.1f\n", 1.35);printf("%.1f\n", 1.45);printf("%.1f\n\n", 1.55);cout << fixed << setprecision(1) << 1.15 << endl;cout << fixed << setprecision(1) << 1.25 << endl;cout << fixed << setprecision(1) << 1.35 << endl;cout << fixed << setprecision(1) << 1.45 << endl;cout << fixed << setprecision(1) << 1.55 << endl;return 0;
}

运行结果

1.1
1.2
1.4
1.4
1.61.1
1.2
1.4
1.4
1.6

从结果可以看出,浮点数保留小数位没有什么规律,既不是“四舍五入”,也不是“四舍六入五成双”。这与浮点数的不精确存储有关系。

解法一

(1)下面的代码,用Codeblocks运行的结果是1.1,用DevC++运行的结果是1.2

#include <cstdio>int main()
{float a = 1.15;a = int(a * 10 + 0.5)/10.0;printf("%.1f\n", a);return 0;
}

(2)把上面的代码中的float改成double后,在Codeblocks中运行的结果仍然是1.1,在DevC++中运行的结果仍然是1.2

#include <cstdio>int main()
{double a = 1.15;a = int(a * 10 + 0.5)/10.0;printf("%.1f\n", a);return 0;
}

(3)下面的代码,用Codeblocks运行的结果是1.1,用DevC++运行的结果是1.2

#include <cstdio>
#include <cmath>int main()
{float a = 1.15;a = floor(a * 10 + 0.5)/10; // floor函数的返回类型为floatprintf("%.1f\n", a);return 0;
}

(4)把上面的代码中的float改成double后,在Codeblocks中和DevC++中运行的结果都是1.2

#include <cstdio>
#include <cmath>int main()
{double a = 1.15;a = floor(a * 10 + 0.5)/10; // floor函数的返回类型为doubleprintf("%.1f\n", a);return 0;
}

从这四个函数的运行结果可以看出,对于相同的取整或floor函数,不同的编程工具会出现不同的运行结果。因为考试时,指定的编程工具是DevC++,所以上面四种写法都是可以的。若是平时练习,则可以使用上面的第四种写法,即使用double和floor()结合。

(5)本题的实现代码为

#include <cstdio>
#include <cmath>int main()
{double a, b, c, d, total;scanf("%lf%lf%lf%lf", &a, &b, &c, &d);a *= 1.2;b *= 3.5;c *= 4.5;d *= 5;a = floor(a * 10 + 0.5) / 10;b = floor(b * 10 + 0.5) / 10;c = floor(c * 10 + 0.5) / 10;d = floor(d * 10 + 0.5) / 10;total = a + b + c + d;printf("%.1f\n%.1f\n%.1f\n%.1f\n%.1f\n", a, b, c, d, total);return 0;
}

解法二

可以使用round函数实现四舍五入

#include <cstdio>
#include <cmath>int main()
{double a, b, c, d, total;scanf("%lf%lf%lf%lf", &a, &b, &c, &d);a *= 1.2;b *= 3.5;c *= 4.5;d *= 5;// round函数返回类型与参数类型一样,即参数若为double,返回doublea = round(a * 10) / 10;b = round(b * 10) / 10;c = round(c * 10) / 10;d = round(d * 10) / 10;total = a + b + c + d;printf("%.1f\n%.1f\n%.1f\n%.1f\n%.1f\n", a, b, c, d, total);return 0;
}

2 打印图形

#include <iostream>
using namespace std;int main()
{char c;cin >> c;int lineCnt = c - 'A' + 1;for(int i = 0; i < lineCnt; i++){for(int j = 0; j < i; j++){cout << ' ';    // 输出左侧的空格}char x = c - i;for(; x >= 'A'; x--){cout << x;}for(x = 'A'; x <= c - i - 1; x++){cout << x;}cout << endl;}return 0;
}

3 数列计算

#include <iostream>
#include <iomanip>
using namespace std;int main()
{int n;cin >> n;int nume = 4; // 分子int deno = 7; // 分母double sum = nume * 1.0 / deno;for(int i = 2; i <= n; i++){int tmp = nume;nume = deno;deno += tmp;sum += nume * 1.0 / deno;}cout << nume << '/' << deno << endl;cout << fixed << setprecision(2) << sum;return 0;
}

了解少儿编程、信息学竞赛请加微信307591841或QQ群581357582
信息学竞赛公众号.jpg

这篇关于2016年海淀区信息学竞赛小学组详细答案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/214863

相关文章

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实