# 指针排序问题

输入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]; ```