1 条题解

  • 0
    @ 2025-4-12 21:52:29

    C :

    #include <stdio.h>
    
    int abs(int a)
    {
      if(a<0)
      {
        return -a;
      }
      return a;
    }
    float maxnum(int a,int b,int c)
    {
      float max=(float)a;
      if(max<b)
      {
        max=b;
      }
      if(max<c)
      {
        max=c;
      }
      return max;
    }
    int main()
    {
      while(1)
      {
        int p,t,g1,g2,g3,gj;
        if(scanf("%d%d%d%d%d%d",&p,&t,&g1,&g2,&g3,&gj)==EOF)
        {
          break;
        }
        if(abs(g1-g2)<=t)
        {
          printf("%.1f\n",(float)(g1+g2)/2);
          continue;
        }
        else
        {
          if(abs(g1-g3)<=t &&abs(g2-g3)<=t)
          {
            printf("%.1f\n",maxnum(g1,g2,g3));
            continue;
          }
          else if(abs(g1-g3)>t &&abs(g2-g3)<=t)
          {
            printf("%.1f\n",(float)(g2+g3)/2);
            continue;
          }
          else if(abs(g1-g3)<=t && abs(g2-g3)>t)
          {
            printf("%.1f\n",(float)(g1+g3)/2);
            continue;
          }
          else if(abs(g2-g3)>t&&abs(g1-g3)>t)
          {
            printf("%.1f\n",(float)gj);
            continue;
          }
        }
      }
    }
    

    C++ :

    #include <stdio.h>
    #include <math.h>
    
    int main(){
    
    	// 定义变量存储总分、差值以及四个分数
        double p, t, g1, g2, g3, gj;
        while(scanf("%lf", &p) != EOF){		// 如果没有读到文件结尾,说明还有测试数据
    
        	// 读入剩下的测试数据
            scanf("%lf%lf%lf%lf%lf", &t, &g1, &g2, &g3, &gj);
            if(fabs(g1-g2) <= t){					// 如果 g1 和 g2 的差值不大于 t,则输出 g1 和 g2 的平均分
                printf("%.1lf\n", (g1+g2)/2);
            }else{
                double tmp1 = fabs(g3-g1);			// 计算 g3 与 g1 的差值
                double tmp2 = fabs(g3-g2);			// 计算 g3 与 g2 的差值
                if(tmp1<=t && tmp2<=t){				// 如果两个差值均不大于 t,则输出三个分数中的最大值
                    printf("%.1lf\n", g1>g2 ? (g1>g3?g1:g3) : (g2>g3?g2:g3));
                }else if(tmp1 <= t){				// 如果 g3 与 g1 的差值不大于t,则输出 g1 与 g3 的平均分
                    printf("%.1lf\n", (g1+g3)/2);
                }else if(tmp2 <= t){				// 如果 g3 与 g2 的差值不大于t,则输出 g2 与 g3 的平均分
                    printf("%.1lf\n", (g2+g3)/2);
                }else{								// 否则两个差值均大于t,则输出另外给出的分数 gj
                    printf("%.1lf\n", gj);
                }
            }
        }
    
        return 0;
    }
    
    
    • 1

    信息

    ID
    2076
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者