#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
float b,d=0,sum=0;
string a,max;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
cin>>a>>b;
if (d<b)max=a;
sum=sum+b;
d=b;
}
cout<<max<<" "<<fixed<<setprecision(1)<<sum/n<<endl;
}
return 0;
}
一稿
显示答案错误
发现sum和d在使用后没有归零
加入
sum=0;d=0;
在dev-c++中成功输出样例
后还是显示答案错误
以为是输出类型的问题,把string类型改为char无果
甚至出现编译错误
后来以为是保留小数位数的问题
以为要四舍五入把fixed<<setprecision(1)
改为setiosflags(ios::fixed)<<setprecision(1)
还是没有AC
最后上课问了老师
发现是在每次循环中间都把d清空无论数据是大是小
最后
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
double b,d=0,sum=0;
string a,max="";
while(cin>>n)
{
for(int i=0;i<n;i++)
{
cin>>a>>b;
if (d<b)
{
max=a;
d=b;
}
sum=sum+b;
//d=b;
}
cout<<max<<" "<<fixed<<setprecision(1)<<sum/n<<endl;
sum=0;
d=0;
}
return 0;
}
Accepted
Summary
仔细观察自己的代码
寻找与题意不符的地方
即使样例输出正确