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

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.