1.!=EOF可以防止时间超出,但是不能用于cin,可用于scanf。
2.在for循环里面声明的变量属于局部变量,在循环外不能生效。所以,在循环外先定义 int min,max 。循环里更改值。
3.把int型数据传入到float中报错,方便起见,我把涉及到的类型全都改为float。
4.score[min]应为min。
5.分清什么不要循环,防止在循环体内运算多次,造成错误。
如,sum中 -min-max错写在for里,被减了好多次。
6.简洁起见,把求min和max的两个循环应写在一个循环里面。
7.min,max的赋值第一次写在了for循环里,造成每次求好的min都被赋值为score[0],用逐侦调试我才发现的。
ac的
#include <iostream>
using namespace std;
int main()
{
float score[100];
float max;
float min;
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
cin>>score[i];
}//输入分数
min=score[0];
max=score[0];
for(int x=1;x<n;x++)
{
if(score[x]<=min)
{
min=score[x];
}
if(score[x]>=max)
{
max=score[x];
}
}//求最小,大值
float sum1=0;
for(i=0;i<n;i++)
{
sum1=sum1+score[i];
}
float sum=sum1-min-max;
float average;
average=sum/(n-2);
printf("%.2f\n",average);
}
return 0;
}
第一次未经调试的代码
#include <iostream>
using namespace std;
int main()
{
int score[100];
int max=0;
int min=0;
int n;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
cin>>score[i];
}//输入分数
for(int x=1;x<=n;x++)
{
if(score[x]<=score[min])
{
score[min]=score[x];
}
}//求最小值
for(int y=1;y<=n;y++)
{
if(score[y]<=score[max])
{
score[max]=score[y];
}
}//求最大值
double sum=0;
for(i=0;i<n;i++)
{
sum=sum+score[i]-score[min]-score[max];
}
double average;
average=sum/(n-2);
printf("%.2f\n",average);
}
return 0;
}
分享到:
相关推荐
一些HDOJ上的DP题目的小总结,但愿能帮到那些想专攻DP的人吧
HDOJ题目分类HDOJ题目分类HDOJ题目分类
ACM ICPC HDOJ1002
ACM ICPC HDOJ1001
hdoj1001标程
hdoj上的资源,代码有注释,很不错的哦
hdoj1004,解题代码,答案代码,欢迎下载
ACM ICPC HDOJ1003
ACM ICPC HDOJ1008
杭州电子科技大学hdoj1002,大整数相加问题
杭州电子科大HDOJ
c语言 最短路 是hdoj上的一个最短路问题,写的很牛
ACM ICPC HDOJ1000
hdoj解题代码,题目为1000-1050
codj,hdoj的源码(50-60题)
hdoj 2013 多校训练3标程+解题报告
HDOJ 源代码 包含几百道HDOJ题目源码
HDOJ题目分类3110题 update at 2014.11.3【Darkangelwings】
hdoj1005 Number Sequence, 杭州电子科技大学oj题目代码
杭电OJ(1000-1099) AC 代码