`
jishublog
  • 浏览: 868823 次
文章分类
社区版块
存档分类
最新评论

[总结]hdoj2014

阅读更多

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;
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics