user-0 提问: 求助 PTA中的一道题遇到了问题 求大神帮助

回复:
user: user-0
content: 引用 1 楼 自信男孩 的回复:#include<stdio.h> #include<string.h> #include<math.h>  float minute(int p,int q,int x,int y); //定义函数 int main() {     int day;     char t[50][2];//序号     int l[50][2];//时间     float w=0;//读者个数     int o,ok=1;//标记     float k=0;float c;     scanf("%d",&day);     int ii=0;int i=0;     for(ii=0;ii<day;ii++)//输入日期并循环     {         ok=1;//标记重置         memset(t,0,sizeof(t)); memset(l,0,sizeof(l)); //数组清空         while(ok){             scanf(" %c %c %d:%d",&t[i][0],&t[i][1],&l[i][0],&l[i][1]);//输入一组数据             if  (t[i][0]!=48)//判断首位是否等于零             {                 for(o=i;o>=0;o--)                 {                     if (t[i][0]==t[o][0]&&t[i][1]=='E'&&t[o][1]=='S')//寻找历史数据，判断是否符合第一位相等且第二位分别为E或S，若是则进行下一步运算，否则继续寻找历史数据                     {                         k=k+minute(l[i][0],l[i][1],l[o][0],l[o][1]);                         w=w+1;                     }                 };//加和读者个数以及阅读时间  //这儿为啥加;分号                 i=i+1;             }//数组加一             else {                 if (w==0) {//判断读者个数是否为0， 若是则直接输出0，若不是则进行运算                     printf("0 0\n");                 }                 else {                     //c = round(k/w);    //round for double roundf() for float                     c = roundf(k/w);                     printf("%.0f %.0f\n",w,c);                 }                 w=0; k=0;ok=0;             }         }//数据重置，跳出循环     }     return 0; }  float minute(int p,int q,int x,int y) {     float min;     min = (p-x)*60+(q-y);//转化时间     return min; }  供参考～  怀疑是round的问题，但是不确定。  不过楼主的代码风格确实很独特，代码不长但是看着费劲呢。自己没感觉到吗？  引用 1 楼 自信男孩 的回复:#include<stdio.h> #include<string.h> #include<math.h>  float minute(int p,int q,int x,int y); //定义函数 int main() {     int day;     char t[50][2];//序号     int l[50][2];//时间     float w=0;//读者个数     int o,ok=1;//标记     float k=0;float c;     scanf("%d",&day);     int ii=0;int i=0;     for(ii=0;ii<day;ii++)//输入日期并循环     {         ok=1;//标记重置         memset(t,0,sizeof(t)); memset(l,0,sizeof(l)); //数组清空         while(ok){             scanf(" %c %c %d:%d",&t[i][0],&t[i][1],&l[i][0],&l[i][1]);//输入一组数据             if  (t[i][0]!=48)//判断首位是否等于零             {                 for(o=i;o>=0;o--)                 {                     if (t[i][0]==t[o][0]&&t[i][1]=='E'&&t[o][1]=='S')//寻找历史数据，判断是否符合第一位相等且第二位分别为E或S，若是则进行下一步运算，否则继续寻找历史数据                     {                         k=k+minute(l[i][0],l[i][1],l[o][0],l[o][1]);                         w=w+1;                     }                 };//加和读者个数以及阅读时间  //这儿为啥加;分号                 i=i+1;             }//数组加一             else {                 if (w==0) {//判断读者个数是否为0， 若是则直接输出0，若不是则进行运算                     printf("0 0\n");                 }                 else {                     //c = round(k/w);    //round for double roundf() for float                     c = roundf(k/w);                     printf("%.0f %.0f\n",w,c);                 }                 w=0; k=0;ok=0;             }         }//数据重置，跳出循环     }     return 0; }  float minute(int p,int q,int x,int y) {     float min;     min = (p-x)*60+(q-y);//转化时间     return min; }  供参考～  怀疑是round的问题，但是不确定。  不过楼主的代码风格确实很独特，代码不长但是看着费劲呢。自己没感觉到吗？  我是本科生啊 刚学两个月C语言 确实不是很熟练 不过朋友给我改完以后还是不对 仍然有两组答案错误和一组段错误 不知道怎么回事

user: user-1
content: #include<stdio.h> #include<string.h> #include<math.h>  float minute(int p,int q,int x,int y); //定义函数 int main() {     int day;     char t[50][2];//序号     int l[50][2];//时间     float w=0;//读者个数     int o,ok=1;//标记     float k=0;float c;     scanf("%d",&day);     int ii=0;int i=0;     for(ii=0;ii<day;ii++)//输入日期并循环     {         ok=1;//标记重置         memset(t,0,sizeof(t)); memset(l,0,sizeof(l)); //数组清空         while(ok){             scanf(" %c %c %d:%d",&t[i][0],&t[i][1],&l[i][0],&l[i][1]);//输入一组数据             if  (t[i][0]!=48)//判断首位是否等于零             {                 for(o=i;o>=0;o--)                 {                     if (t[i][0]==t[o][0]&&t[i][1]=='E'&&t[o][1]=='S')//寻找历史数据，判断是否符合第一位相等且第二位分别为E或S，若是则进行下一步运算，否则继续寻找历史数据                     {                         k=k+minute(l[i][0],l[i][1],l[o][0],l[o][1]);                         w=w+1;                     }                 };//加和读者个数以及阅读时间  //这儿为啥加;分号                 i=i+1;             }//数组加一             else {                 if (w==0) {//判断读者个数是否为0， 若是则直接输出0，若不是则进行运算                     printf("0 0\n");                 }                 else {                     //c = round(k/w);    //round for double roundf() for float                     c = roundf(k/w);                     printf("%.0f %.0f\n",w,c);                 }                 w=0; k=0;ok=0;             }         }//数据重置，跳出循环     }     return 0; }  float minute(int p,int q,int x,int y) {     float min;     min = (p-x)*60+(q-y);//转化时间     return min; }  供参考～  怀疑是round的问题，但是不确定。  不过楼主的代码风格确实很独特，代码不长但是看着费劲呢。自己没感觉到吗？