C语言题目:使用指针编写程序,用选择法将输入的n个整数按从小到大的顺序排列 #include<stdio.h> #define N 20 int main() { /***** 用选择法排序 *****/ /********** Begin *********/ /********** End **********/ } 测试输入: 10 91 1 42 32 9 57 6 33 2 88 预期输出: 1 2 6 9 32 33 42 57 88 91
时间: 2023-06-29 07:07:11 浏览: 174
以下是使用指针编写的 C 语言程序,用选择法将输入的 n 个整数按从小到大的顺序排列:
```
#include <stdio.h>
#define N 20
int main() {
int n, i, j, temp, *p;
int a[N];
printf("请输入数字个数 n:");
scanf("%d", &n);
printf("请输入 %d 个数字:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < n - 1; i++) {
p = &a[i];
for (j = i + 1; j < n; j++) {
if (*p > a[j]) {
p = &a[j];
}
}
if (p != &a[i]) {
temp = a[i];
a[i] = *p;
*p = temp;
}
}
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
在该程序中,我们首先定义了一个长度为 N 的整型数组 a 和一个指针变量 p,用于指向数组中的元素。然后,我们使用 scanf 函数从标准输入中获取数字个数 n 和 n 个数字,并将其存储到数组 a 中。
接下来,我们使用选择排序算法对数组 a 进行排序。在每一轮排序中,我们将 p 指向当前未排序的元素中最小的元素。然后,我们将 a[i] 和 *p 交换位置(如果 a[i] 不是当前未排序元素中最小的元素的话)。这样,在每一轮排序后,a[0] 至 a[i] 中的元素就是已排序的元素,a[i+1] 至 a[n-1] 中的元素是未排序的元素。
最后,我们使用 printf 函数将排序后的结果输出到标准输出中。
运行该程序,输入测试输入,即可得到预期输出。
阅读全文