# 指针排序问题
输入10个数,按绝对值从大到小排序输出。
输入形式:输入10个float实数
输出形式:保留小数点后两位有效数字;输出从大到小排列
以下程序实现了这一功能,请你填补空白处的内容:
```cpp
#include
#include
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
#include
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];
```