void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

给出几个人的成绩,以及路程,求出速度min/km

字符串时间相加问题,关键就是处理进位,四舍五入比较麻烦,注意点

#include<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int main()
{
char s[1000][10];
int len,i,j,n,num,a[10],flag;
double sum,l,t,t1,v,v1;
while(scanf("%d%lf",&n,&l)!=EOF)
{
while(scanf("%d",&num)!=EOF)
{
flag
=0;
memset(a,
0,sizeof(a));
for(i=0;i<n;i++)
scanf(
"%s",s[i]);
for(i=0;i<n;i++)
{
if(s[i][0]=='-')
{flag
=1;break;}
else
{
a[
0]=0;
for(j=0;s[i][j]!=':';j++)//(找到第一个:就结束小时的运算)
{
a[
0]*=10;
a[
0]+=s[i][j]-'0';
}
a[
1]+=a[0];
a[
2]+=(s[i][j+1]-'0')*10+(s[i][j+2]-'0');//把分钟对用数转换
a[3]+=(s[i][j+4]-'0')*10+(s[i][j+5]-'0');//秒对应的转换成整数
}
}
if(flag)printf("%3d: -\n",num);
else
{
t
=a[1]*1.0*60+a[2]*1.0+a[3]*1.0/60;
v
=t/l;v1=(v-(int)v)*60;//v为分钟数,小数部分v1即为秒数
if(v1-(int)v1>=0.5)v1+=1;//v1的四舍五入
if((int)v1>=60){v1-=60;v+=1;}
printf(
"%3d: %d:%02d min/km\n",num,(int)v,(int)v1);

}
}
}
return 0;
}
posted on 2011-04-17 13:22  void-man  阅读(222)  评论(0)    收藏  举报