洛谷-排队取水问题-代码求纠错

img


我的代码按照题目的输入,得到的输出是对的,我也感觉代码没什么问题,但是提交之后一半Wa,找了半天没找出错误原因😭求高人指点

#include <stdio.h>

int main()
{
int n;
int a[1005][2];

scanf("%d", &n);

int i,j,t;
for (i = 0; i < n; i++)
{
    a[i][0] = i + 1;          //编写序号
    scanf("%d", &a[i][1]);    //等待时间
}

for (i = 1; i < n; i++)                 //冒泡排序
{
    for (j = 0; j < n - i; j++)
    {
        if (a[j][1] > a[j + 1][1])
        {
            t = a[j][1];
            a[j][1] = a[j + 1][1];
            a[j + 1][1] = t;

            t = a[j][0];
            a[j][0] = a[j + 1][0];
            a[j + 1][0] = t;
        }
    }

}

for (i = 0; i < n; i++)           //输出排序方法
{
    printf("%d ", a[i][0]);
}
printf("\n");

int count=0;
{
    for (i = 0; i < n - 1; i++)                 //累加等待时间
    {
        count += (a[i][1] * (n - i - 1));
    }
}

double ave = count / (float)n;                 //输出平均等待时间
printf("%.2lf",ave);



return 0;

}

修改如下,供参考:

#include <stdio.h>
int main()
{
    int n;
    int a[1001][2];
    scanf("%d", &n);
    int i, j, t;
    for (i = 0; i < n; i++)
    {
        a[i][0] = i + 1;       //编写序号
        scanf("%d", &a[i][1]);//等待时间
    }
    for (i = 0; i < n - 1; i++)   //for (i = 1; i < n; i++)//冒泡排序  修改
    { 
        for (j = 0; j < n - i - 1; j++) //for (j = 0; j < n - i; j++)  修改
        {
            if (a[j][1] > a[j + 1][1])
            {
                t = a[j][1];
                a[j][1] = a[j + 1][1];
                a[j + 1][1] = t;

                t = a[j][0];
                a[j][0] = a[j + 1][0];
                a[j + 1][0] = t;
            }
        }
    }
    for (i = 0; i < n; i++)  //输出排序方法
    {
        printf("%d ", a[i][0]);
    }
    printf("\n");
    double count = 0;    //int count = 0;  修改
    for (i = 0; i < n; i++) //for (i = 0; i < n - 1; i++) //累加等待时间 修改
    {
        count += (a[i][1] * (n - i - 1));
    }
    double ave = count / n; //输出平均等待时间
    printf("%.2lf", ave);
    return 0;
}