# 指针排序问题

<p>输入10个数&#xff0c;按绝对值从大到小排序输出。
输入形式&#xff1a;输入10个float实数
输出形式&#xff1a;保留小数点后两位有效数字；输出从大到小排列
</p>

以下程序实现了这一功能，请你填补空白处的内容：

```cpp
#include <math.h>
#include <stdio.h>
void paixu(float *p, int n)
{
    int i, j;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (fabs(p[j]) < fabs(p[j + 1]))
            {
                float tmp;
				_______________;
            }
        }
    }
}
int main()
{
    float f[10];
    int i;
    for (i = 0; i < 10; i++)
        scanf("%f", &f[i]);
    paixu(f, 10);
    for (i = 0; i < 10; i++)
        printf("%.2f ", f[i]);
    return 0;
}
```

## template

```cpp
#include <math.h>
#include <stdio.h>
void paixu(float *p, int n)
{
    int i, j;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (fabs(p[j]) < fabs(p[j + 1]))
            {
                float tmp;
                tmp = p[j];
                p[j] = p[j + 1];
                p[j + 1] = tmp;
            }
        }
    }
}
int main()
{
    float f[10];
    int i;
    for (i = 0; i < 10; i++)
        scanf("%f", &f[i]);
    paixu(f, 10);
    for (i = 0; i < 10; i++)
        printf("%.2f ", f[i]);
    return 0;
}
```

## 答案

```cpp
tmp = p[j];
p[j] = p[j + 1];
p[j + 1] = tmp;
```

## 选项

### A

```cpp
tmp = p[j];
p[j] = p[j - 1];
p[j - 1] = tmp;
```

### B

```cpp
tmp = p[j];
p[j + 1] = tmp;
p[j] = p[j + 1];
```

### C

```cpp
tmp = p[j];
p[j - 1] = tmp;
p[j] = p[j - 1];
```