CCF 201903-1 小中大 C++ 精度、类型转换问题注意!

Python实战CCF CSP历年真题解析与优化技巧 本文分享了使用Python语言应对CCF CSP认证考试的实战经验与优化技巧。文章分析了Python在解题中的语法优势与性能挑战,并针对不同难度题目提供了具体的解题策略、代码模板和优化方法,如利用内置数据结构、优化I/O以及应用单调栈、双指针等算法,旨在帮助考生高效备考并取得高分。 阅读详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二刷:关键在于想要得到double类型的mid,就要除以2.0而不是2.
mid=(a[n/2-1]+a[n/2])/2.0;或者mid=double((a[n/2-1]+a[n/2]))/2;
注意,已经是排好序的,只是不确定升序还是降序,所以不用重新排序,只要判断一下最大最小的有没有反。
注意:输出时,%.1f对应double类型的mid,%d对应整型的mid1,用mid是不行的。类型和输出格式一定要对应,否则扣很多分。 强制转换类型int mid1=int(mid);

#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
	int n,min,max;
	double mid;
	scanf("%d",&n);
	int a[n];
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	if(n%2!=0)  mid=a[n/2];
	else   mid=(a[n/2-1]+a[n/2])/2.0;
	int mid1=int(mid);
	min=a[0];
	max=a[n-1];
	if(min>max) swap(min,max);	
	if(mid!=mid1)
	   printf("%d %.1f %d",max,mid,min);
	else 
	   printf("%d %d %d",max,mid1,min);
	return 0;
}

一刷:
思路:读取n,如果n%2==1,说明有奇数个数,中位数为第n/2向上取整个数(n/2+1);如果有偶数个数,则中位数为第n/2和n/2+1个数加和再除以2;定义三个变量分别存储最大值、最小值和中位数,最大值和最小值通过保留第一个和最后一个数并且比较大小来确定。输出中位数前要判断是否带小数,如果n为奇数,则中位数肯定是整数,如果n是偶数,则**要看中间的两个数相加得到的是奇数还是偶数,如果是偶数,则除以2得到的中位数必然是整数,如果和是奇数,则得到的是小数,**需要四舍五入输出一位小数。其实,由于相加的两个是整数,除以2之后最多只有一位小数,所以不必考虑四舍五入。

#include <iostream>
#include <algorithm>
//#include <iomanip>
using namespace std;
int main()
{
	int n,min,max;	
	cin >> n;
	int a[n];
	for(int i=0;i<n;i++)
	{
		cin >> a[i];
	}
	max=a[0];
	min=a[n-1];
	if(max<min) swap(min,max);
	cout << max << " ";
	if(n%2==1) cout <<a[n/2]<< " ";
	else{
		if((a[n/2-1]+a[n/2])%2!=0) 
		{
//			//cout << setiosflags(ios::fixed);
			cout << (a[n/2-1]+a[n/2])/2.0 << " ";
		}
		else
		   cout << (a[n/2-1]+a[n/2])/2 << " ";
	}
	cout << min << endl;
	return 0;
}

注意int型到double型的转换方法double(a)即可,其中a为int型。 本题目由于是整数相加再相除最多一位小数,所以不必设置精度。

总结:
int mid1=int(mid); 强制转换mid从double到int
想要得到double类型的mid,由于a[n]是int型,为了不丢失小数点后的精度
mid=(a[n/2-1]+a[n/2])/2.0;或者mid=double((a[n/2-1]+a[n/2]))/2;`
scanf("%d",&n);
printf("%d %.1f %d",max,mid,min); printf("%.2f", 3.1415);输出几位小数
printf("%d %d %d",max,mid1,min);类型与格式对应
Int是将一个数值向下取整为最接近的整数的函数。
两个类型的数值可以相互赋值,int赋给double型,会自动补零,反之会截断只保存整数部分。

cout输出精度用于浮点数输出,包括float和double类型。
要控制输出精度,需要引用头文件iomanip, 并使用setiosflags(ios::fixed);配合setprecision。
使用方法见示例代码:

#include<iostream>
#include<iomanip>
using namespace std;
 
int main()
{
    double f = 3.1415926535;
    cout << f << endl;           // 3.14159
    cout <<setiosflags(ios::fixed);  //只有在这项设置后,setprecision才是设置小数的位数。
    cout << setprecision(0) << f << endl;    //输出0位小数,3
    cout << setprecision(1) << f << endl;    //输出1位小数,3.1
    cout << setprecision(2) << f << endl;    //输出2位小数,3.14
    cout << setprecision(3) << f << endl;    //输出3位小数,3.142
    cout << setprecision(4) << f << endl;    //输出4位小数,3.1416
    return 0;
}

cout默认是不输出浮点数小数点后多余的0的。如果想要输出小数点后多余的0,则要在程序中用cout.setf(ios::showpoint);语句设置,不再想输出时要用cout.unsetf(ios::showpoint);语句恢复。
而printf("%f",mid);默认输出小数点后六位,且0不省略。
%8.3f。就是:占8个字符的位置,小数点后面有3位。注意小数点也算一位。
测试数据:

3
-1 2 4

4
-2 -1 3 4

4
-1 2 3 4
CSP认证第一题通关策略:以202305-1为例,3步掌握字符串哈希与模拟 本文详细解析了CSP认证第一题的解题策略,以202305-1为例,通过3步掌握字符串哈希与模拟技巧。文章分析了题目核心特征、通用解题框架,并提供了实战案例和优化建议,帮助考生高效备考CCF-CSP认证考试。 阅读详情

相关推荐

使用Typora时LaTeX内联公式简单汇总

0、前言 在使用Typora写笔记时,有时候需要添加上LaTeX排版的公式。以下是整理出的一份简单笔记,方便记忆不清楚时查阅。笔记暂时不够完善,之后再补充。 注:有些公式语法KateX不能解析,但在Typora中可以使用(不用在意) 1、一些基本内联公式 位置关系 展示 LaTeX 说明 x2x^{2}x2 x^{2} 右上标 x2x_{2}x2​ x_{2} 右下标 2x{}^{2}x2x {}^{2}x 左上标 2x{}_{2}x2​x {}_{2}x 左下标

白白旧维的博客 4438

c、c++编程技巧之数据类型转换的精度问题

但是在a/b中,如果a,b都是int型且a<=b时,该值为零,这往往会成为我们不易察觉的bug。我们知道 在C、C++编程中,1/2的值为0。故在处理该类型的问题时可以使用强制转换类型即。该结果应该被赋予一个float型的变量。

qq_28116937的博客 301

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

【C++】模拟高精度计算——进制转换

模拟十分考验代码功底,模拟题面的要求即为正解。

AliceK1008的博客 968

告别手动核对!用这个ABAP报表一键导出所有物料的库存与需求清单

本文介绍了如何通过定制化ABAP报表一键导出SAP系统中所有物料的库存与需求清单,整合MD04、MB52、ME2N等多个事务码的数据,大幅提升供应链管理和生产计划效率。该报表可自动生成包含库存状态、MRP需求、采购订单等关键指标的物料全景视图,帮助企业减少手工操作错误,节省时间成本。

weixin_33725515的博客 467

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1907

c++进制转化及输出精度问题总结

一、十进制转二进制 //十进制转二进制 stringten_to_two(const unsigned int val){ string res=""; for(int i=16;i>-0;i--){ if(val & (1<<i)) res += "1"; else res += "0";

小拳头的博客 1226

VGG16

VGG16学习笔记

一去不复返的通信er 1177

C++精度控制说明(详细)

前言: C++是目前世界上性能最为强大的语言,虽然C++性能很强大,但是C++学习周期很长,那么,对于一些新手来说,最为困扰的就是C++的精度控制和一些格式转换问题 现在,让我们来看看C++的格式控制语法 (注1:以下所有代码均以使用using namespace std命名空间) (注2:此文章参考于C++prime plus第六版) 1.将进制进行转换 ostream 类是从ios派生而来的,...

Blusmiao的博客 1万+

5分钟搞定阿里云千问大模型API申请:手把手教你获取API Key

本文提供了一份高效的阿里云通义千问大模型API Key获取实战指南。通过清晰的步骤,帮助开发者在五分钟内完成从账号准备、精准导航控制台到创建并验证API Key的全过程,并强调了密钥安全管理和基础调用测试的重要性,助力快速集成AI能力。

ol789012345的博客 1344

CarSim仿真快速入门(十八)-CarSim2021中的混合动力和纯电动系统

CarSim和TruckSim包括用于电动汽车(BEV)和混合电动汽车(HEV)的动力总成系统。电动和混合电动系统可与所有现有驱动系统配合使用,例如:FWD,RWD,AWD和多轴驱动系统。混合动力/电动系统模型还包括电池管理控制。CarSim或TruckSim中的默认动力总成是为闭环速度控制器提供的备用动力总成。要安装和使用完整的动力总成,请从Vehicle: Assembly库或Vehicle: Lead Unit 库链接到Powertrain数据集。在“动力总成”界面上,从下拉列表控件中选择以下三个选项

小明师兄的博客 7455

C++算法(高精度算法)

C++高精度算法

博客 4173

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

CCF题目201903-1 小中大

代码: #include<iostream> #include<cmath> #include<cstring> #include<cstdio> #include<cstdlib> #include<string> #include<algorithm> #include<list> #inc...

种花家的奋斗兔的博客 978

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

CCF201903-1 小中大

/*** 这题挺坑的。 首先四舍五入基本上不用考虑,直接%.1f就行了。 其次计算flout时,注意强制转换int为flout再计算。 如 flout mid = (a + b)/2;这mid算出来永远是整数 应写为flout mid = (a + b)/2.0 **/ #include <iostream> #include <stdio.h> //#define debug using namespace std; int main(){ int n,i,a =

weixin_43963453的博客 219

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CCF-CSP 201903-1 小中大

题目: 经验总结: 由于题目输入数据过多,所以用scanf和printf方式比cin和cout方式省时间。 记:注意输出的格式,要控制精度。 C++代码: #include<bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); double num[n]; for(int i=0; i<n; i++) { scanf("%lf",&num[i]); } sort(num,num+n);

努力努力再努力 183

CCF 201903-1 小中大

刚刚开始做的时候错了好多次,很意外,要注意细节 很快死在输出格式上,整数则直接输出整数,分数输出位小数; #include<iostream> #include<iomanip> using namespace std; int main() { int min,n,max; float a[100000]; cin>>n; ...

qq_42878520的博客 160

(CCF认证)201903-1 小中大

满分代码: #include<iostream> #include<bits/stdc++.h> #include<math.h> #define Eps 1e-6 using namespace std; int main() { double a[100005]; int t; scanf("%d",&t); for(int...

weixin_43791787的博客 142

ccf-csp历届第一题题解 (二)17-20年 ( •̀ ω •́ )

ccf-csp历届签到题题解(Java&C++)   嘀嘀嘀,我又来哩~这次送上17年到20年的签到题题解,助大家在ccf中好好发挥(~ ̄▽ ̄)~。

Keep coding! 379

刷ccf学到的知识

201903: 1.需要存储较多的数时,可以使用静态数组,即作为全局变量声明,因为堆提供的空间更大,全局变量存储在堆中,局部变量存储在栈中; 2.判断数n是奇数还是偶数的方法:(1)n%2!=0为奇数,0为偶数。(2)从二进制(补码)的角度:n&10为偶数,1为奇数。a&b是a的补码与b的补码按位进行与运算,也就是乘。与1进行与运算也就是将前几位清0,只留补码最后一位,奇数补码最后...

qq_42790021的博客 353

C++基础算法①——高精度加减法计算

高精度导论、高精度+低精度、高精度+高精度、高精度减法。

博樽 1万+

c++取整与精度问题_C/C++实战030:double转int常见的取整操作

在实际开发中我们经常会需要对数据类型进行转换,比如说要将double类型转成int类型。取整我们也需要根据自己的业务需求来得到自己想要的值,有的需要向上取整、有的可能需要向下取整,或者四舍五入取整。还有的直接只取整数部分,不管小数后面的内容。向上取整向上取整我们可以利用函数ceil来实现,该函数返回一个大于或等于x的整数。该函数由头文件math.h提供,比如π通过ceil返回的就是4。该函数可以处...

weixin_29620579的博客 6644

C/C++中的类型转换方式

也能用于具有继承关系的类层次结构中,进行向上转型(将派生类指针或引用转换为基类指针或引用),这种转换相对安全,编译器会在编译时检查类型的兼容性。比如在类的继承关系中,将基类指针不恰当地转换为派生类指针(没有进行正确的动态类型检查),可能会导致访问不存在的成员变量或函数,因为实际对象可能并不是转换后的类型所期望的。例如,将一个很大的 long long 类型的值转换为 int 类型, int 类型可能无法容纳这个值,从而导致溢出,产生错误的结果。类型转换是将一种数据类型的变量转换为另一种数据类型的过程。

2401_88249494的博客 1337

C++算法之高精度计算

利用计算机进行计算时,有时会遇到计算精度不够的问题。但是我们可以利用程序实现高精度计算,本文介绍几种常用的高精度计算方法。

现役 OIer。 4028

C++ 四种强制类型转换

C++ 类型转换(C风格的强制转换): 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型,布尔型。其中数值型包括 整型与浮点型;字符型即为char。 (1)将浮点型数据赋值给整型变量时,舍弃其小数部分。 (2)将整型数据赋值给浮点型变量时,数值不变,但是以指数形式存储。 (3)将double型数据赋值给float型变量时,注意数值范围溢出。 (4)字符型数据可以赋值给整型变量,此时存入...

weixin_34232363的博客 5235

C++:C++的类型转换

在C语言中,如果。1. 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败2. 显式类型转化:需要用户自己处理C风格的转换格式很简单,但是有不少缺点的:1. 隐式类型转化有些情况下可能会出问题:比如数据精度丢失2. 显式类型转换将所有情况混合在一起,代码不够清晰因此C++提出了自己的类型转化风格,注意。

zhang_si_hang的博客 3696
上一篇: CCF 201909-2 小明种苹果(续)C++
下一篇: CCF 201903-2 二十四点 C++ 注意
cloudless_sky
博客等级 码龄8年 106粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值