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

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket