求几个人的平均速度,注意数据类型的转换和double类型的精度。
上代码
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 int main() 7 { 8 int n,a; 9 double d; 10 double ave; 11 char c[10]; 12 scanf("%d%lf",&n,&d); 13 while(~scanf("%d",&a)){ 14 ave=0; 15 int flag=0; 16 17 for(int i=0;i<n;i++){ 18 scanf(" %s",c); 19 if(c[0]=='-') 20 flag=1; 21 if(flag!=1){ 22 ave=ave+((c[0]-'0')*60)+((c[2]-'0')*10)+c[3]-'0'; 23 ave=ave+((double)((c[5]-'0')*10+c[6]-'0')/60); 24 } 25 } 26 ave = ave/d; 27 printf("%3d: ",a); 28 int tmp=ave; 29 if((int)((ave-tmp)*60+0.5) == 60){//处理60秒问题 30 tmp++;ave=tmp; 31 } 32 if(flag == 0){ 33 printf("%d:%.2d min/km ",tmp,(int)((ave-tmp)*60+0.5));//精度 34 } 35 else 36 printf("- "); 37 } 38 return 0; 39 }