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认证考试。 阅读详情

相关推荐

ANSYS Fluent中的声学模型:实用指南

文章摘要 本文介绍了ANSYS Fluent中三种气动声学模拟方法:Ffowcs-Williams & Hawkings(FWH)模型、宽带噪声源模型和波动方程模型。FWH模型适用于外部气动声学问题,需要瞬态流场数据来预测远场噪声;宽带模型基于稳态RANS模拟,可快速识别噪声源位置,适合早期设计阶段;波动方程模型直接求解声波方程,提供全域声压分布,但仅适用于低马赫数流动。文章详细说明了各模型的使用场景、设置步骤和关键参数配置,为工程应用提供了实用指南。

weixin_45793544的博客 1318

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

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

qq_28116937的博客 301

Unity 调用安卓内部安装apk

一、申请权限 应用内安装其他应用的权限属于特殊权限,需要在特殊申请。 Uri packageURI = Uri.parse("package:" + mContext.getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startA...

BDDNH的博客 1238

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

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

AliceK1008的博客 968

随机森林的可解释性分析(含python代码)

随机森林的“黑箱”特性逐渐凸显,这使得我们难以理解和解释模型内部的工作机制。对于许多应用场景而言,仅仅获得高准确率的预测结果是不够的;了解预测背后的逻辑同样重要,特别是在医疗诊断、金融风险评估等领域。因此,对随机森林进行可解释性分析变得尤为重要。

m0_59257547的博客 3848

Python爬虫实战:全方位解析前程无忧(51job)职位详情爬取及反爬破解

平台规模:覆盖全国各行业、数百万条岗位信息。数据特点:职位描述详细,职位标签丰富。数据价值:支持招聘趋势分析、职业发展研究、薪资行情调研。推荐Python 3.10+,支持最新async特性与库兼容。

2201_76125261的博客 1486

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

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2622

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

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

Blusmiao的博客 1万+

SIMULINK开发项目实例 1000 例专栏之第802例--基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

xiaoheshang_123的博客 268

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

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

C++高精度算法

博客 4173

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CCF题目201903-1 小中大

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

种花家的奋斗兔的博客 978

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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、付费专栏及课程。

余额充值