免檒 2023-11-25 11:42 采纳率: 87.5%
浏览 116
已结题

关于pta平台的一个测试点

7-20 哪里贵了
分数 10
作者 苏国煜
单位 闽江学院
在一次直播销售活动中,消费者在弹幕中提出“这个品牌越来越贵了”时,销售员里加其(Rigachi)回应说:“哪里贵了?”。为了解决这个问题,他决定为每一种商品打一个折扣。然而,他只想为那些定价过高的商品打折。里加其(Rigachi)认为,如果一个商品的价格超过了所有商品的平均价格,那么这个商品就定价过高。定价过高的商品应该打9折,其他商品的价格保持不变。现在,请你来帮他计算出每种商品的折扣后的价格。

输入格式:
输入共有2行
第一行,输入商品的数量n (1≤n≤10)
第二行,n个浮点数a

输出格式:
n个浮点数,代表每种商品的折扣后的价格(保留至小数点后1位),中间以一个空格分割,末尾不得有多余的空格

输入样例:
8
40.3 90.2 74.3 34.4 33.1 32.1 12.6 69.8
输出样例:
在这里给出相应的输出。例如:

40.3 81.2 66.9 34.4 33.1 32.1 12.6 62.8
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>
int main()
{
    float a[10]={0.0};
    int n;
    scanf("%d",&n);
    int i;
    double ave=0;
    for (i=0;i<n;i++)
    {
        scanf("%f",&a[i]);
        ave+=a[i];
    }
    ave/=n;

    for (i=0;i<n;i++)
    {
        if (a[i]>ave)
            a[i]=a[i]*0.9;
    }

    for (i=0;i<n;i++)
    {
        if (i==0)
            printf ("%.1f",a[i]);
        else
            printf (" %.1f",a[i]);
    }

    puts("");
    return 0;
}

请问这里为什么总有一个测试点通不过;

  • 写回答

2条回答 默认 最新

  • yoyoshino 2023-11-30 16:24
    关注

    用double不要用float

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月11日
  • 已采纳回答 12月3日
  • 创建了问题 11月25日