题目来源
知识点
%f在printf下既可以表示float类型, 又可以表示double类型。
%lf在printf下是未定义的,但很多系统会接受%lf表示double类型。
%f 和 %lf 在scanf下是定义了的。scanf区别%f和%lf。
参考文章: c语言 printf 输出double %lf,C++玄学问题 关于printf输出double类型显示0.000000的原因…
代码
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
int main() {
int N;
cin>>N;
int num[N];
for (int i = 0; i < N; ++i) {
cin>>num[i];
}
double n1, n2, n3;
n1 = max(num[0], num[N-1]);
n3 = min(num[0], num[N-1]);
if (N % 2 == 0) { // 偶数
n2 = ((double)num[N/2] + (double)num[N/2 - 1]) / 2;
}
else {
n2 = (double)num[N/2];
}
if (n2 - (int)n2 != 0) {
//cout<<n1<<" "<<n2<<" "<<n3<<endl;
printf("%.0f %.1f %.0f", n1, n2, n3); // lf, 输出全为0
}
else {
//cout<<n1<<" "<<n2<<" "<<n3<<endl;
printf("%.0f %.0f %.0f", n1, n2, n3);
}
return 0;
}