正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2023 第一轮真题 › 第 18 题
CSP-J 2023 第一轮 第 18 题:程序(一):是否总是输出四位小数
题目
#include<iostream>
#include<cmath>
using namespace std;
double f(double a,double b,double c){
double s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));
}
int main(){
cout.flags(ios::fixed);
cout.precision(4);
int a,b,c;
cin>>a>>b>>c;
cout<<f(a,b,c)<<endl;
return 0;
}
假设输入的所有数都为不超过 $1000$ 的正整数,完成下面的判断题和单选题:
本小题
(2分)程序总是输出四位小数( )
选项
- √. 正确
- ×. 错误
答案
×
题解
选 ×(错误)。
fixed 和 precision(4) 会让正常的浮点数以小数点后四位输出,但题目没有保证输入的三条边能构成三角形。
例如输入: ``text 1 1 4 ` 此时 s = 3,根号内为: \[ 3(3-1)(3-1)(3-4)=-12 \] sqrt(-12) 无法得到实数结果,通常返回 NaN(非数值),输出可能是 nan`,并不是四位小数。
所以“总是输出四位小数”是错误的。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号