第一次错误——八十分
#include<iostream>
using namespace std;
int main() {
int n;
cin>>n;
int a[100005];
for(int i=1;i<=n;i++) cin>>a[i];
int ans1,ans2,ans3;
if(a[1]==a[n]) {
ans1=ans3=a[1];
}
if(a[1]>a[n]) {
ans1=a[1];
ans3=a[n];
}
if(a[1]<a[n]) {
ans1=a[n];
ans3=a[1];
}
if(n%2==1) ans2=a[(n+1)/2];
else ans2=(a[n/2]+a[n/2+1])/2; //忽视不可能整除的情况 不会怎样得到商为小数。
cout<<ans1<<" "<<ans2<<" "<<ans3;
return 0;
}
最大的错因:
1、没有看要求是按从大到小输出。
2、输出只保留一位小数。
正确的代码
#include<iostream>
#include<stdio.h>
using namespace std;
int main() {
int n;
cin>>n;
int a[100005];
for(int i=1;i<=n;i++) cin>>a[i];
int ans1,ans3;
double ans2;
if(a[1]==a[n]) {
ans1=ans3=a[1];
}
if(a[1]>a[n]) {
ans1=a[1];
ans3=a[n];
}
if(a[1]<a[n]) {
ans1=a[n];
ans3=a[1];
}
if(n%2==1) ans2=a[(n+1)/2];
else ans2=(a[n/2]+a[n/2+1])/2.0; //除数必须为小数
if(ans2-int(ans2)==0) cout<<ans1<<" "<<(int)ans2<<" "<<ans3;//容易忽视ans2的类型转换
else printf("%d %.1f %d",ans1,ans2,ans3);
return 0;
}
**收获:
1、学会控制输出小数点后几位
2、学会怎样使商变成小数
3、学会审题目!!!
**