输入 10 个数,按绝对值从大到小排序后输出。(要求用指针做)
时间: 2023-06-05 15:47:04 浏览: 237
输入10个数,然后按顺序排列
可以使用指针来实现对10个数按照绝对值从大到小排序的操作。具体实现步骤如下:
1. 定义一个指向int类型的指针变量p,并让它指向一个长度为10的int类型数组a。
2. 使用for循环遍历数组a,对每个元素求绝对值。
3. 定义一个指向int类型的指针变量p1,让它指向数组a的第一个元素。
4. 定义一个指向int类型的指针变量p2,让它指向数组a的最后一个元素。
5. 使用while循环,不断比较p1和p2所指向的元素的绝对值大小,如果p1所指向的元素的绝对值比p2所指向的元素的绝对值大,则交换它们的值。
6. 继续比较p1和p2所指向的元素,直到p1和p2相遇为止。
7. 输出排序后的数组a。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10];
int *p = a;
int i, j, temp;
printf("请输入10个数:\n");
for (i = ; i < 10; i++)
{
scanf("%d", p + i);
*(p + i) = abs(*(p + i)); // 求绝对值
}
int *p1 = a;
int *p2 = a + 9;
while (p1 < p2)
{
for (i = ; i < 10; i++)
{
if (abs(*(p1 + i)) < abs(*(p2 - i)))
{
temp = *(p1 + i);
*(p1 + i) = *(p2 - i);
*(p2 - i) = temp;
}
}
p1++;
p2--;
}
printf("按绝对值从大到小排序后的数组为:\n");
for (i = ; i < 10; i++)
{
printf("%d ", *(p + i));
}
return ;
}
阅读全文