众人眼中的水题,在我这里依旧是难题,真有点纠结,但你已经没有后路可退,加油吧,少年!
思路:一开始自己感觉应该很简单,在读取数据的时候的确自己成功了,可是接下来自己在运算的时候出了差错,久久没有好的思路,参考了大神的思路后用单个字符读取各个数字,果真可以,然后再就是运算了,四舍五入的方法是int t2=(int)(t1+0.5);
/************************************************************************* File Name: 1036.cpp Author: yubo Mail: yuzibode@126.com Created Time: 2014年04月09日 星期三 01时03分49秒 学习重点: ************************************************************************/ #include<cstring> #include<cstdio> #include<iostream> using namespace std; int main() { //freopen("average.in","r",stdin); int i,n,flag; char h,m1,m2,s1,s2; int t,sum; double d,t1; scanf("%d",&n); scanf("%lf",&d); while(scanf("%d",&t)!=EOF){ sum=0; flag=0; for(i=0;i<n;i++){ getchar(); scanf("%c:%c%c:%c%c",&h,&m2,&m1,&s2,&s1); if(h==‘-‘) { flag=1; continue; } sum+=(3600*(h-‘0‘)+((m2-‘0‘)*10+(m1-‘0‘))*60+(s2-‘0‘)*10+(s1-‘0‘)); } t1=sum/d; int t2=(int)(t1+0.5);//自己在这儿不知所措 if(flag) printf("%3d: -\n",t); else printf("%3d: %d:%02d min/km\n",t,t2/60,t2%60); } }
原文:http://blog.csdn.net/yuzibo747/article/details/23207641