题目要求:编写一个程序,用指向指针的指针的方法对n个整数排序并输出。要
求写一个自定义函数sort(),其原型为:void sort(int **p,int n);n和整数在
主函数中输入,排序后结果最后在主函数中输出
编写的代码不对,哪里有问题呢:
#include
void sort(int **p, int n) {
int i, temp, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1; j++) {
if (**p > **(p + 1)) {
temp = **p;
**p = **(p + 1);
**(p + 1) = temp;
}
}
}
}
int main() {
int **p ;
int i, n;
while (scanf("%d", &n) && n != 0) {
for (i = 0; i < n; i++, p++) {
scanf("%d", & **p);
}
sort(p, n);
for (i = 0, p = 0; i < n; i++, p++) {
printf("%d", **p);
}
}
return 0;
}
#include <stdio.h>
void sort(int **p, int n) {
int i, temp, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i-1; j++) {
if (*(*p+j) > *(*p + j+1)) {
temp = *(*p+j);
*(*p+j)= *(*p + j+1);
*(*p +j+ 1) = temp;
}
}
}
}
int main() {
int *a = NULL;
int **p = NULL;
int i, n;
while (scanf("%d", &n) && n != 0) {
a = (int*)malloc(sizeof(int)*n);
p = &a;
for (i = 0; i < n; i++) {
scanf("%d", (*p)+i);
}
sort(p, n);
for (i = 0; i < n; i++) {
printf("%d ", *(*p+i));
}
free(a);
}
return 0;
}
该回答引用ChatGPT
下面是一个使用指向指针的指针对n个整数排序并输出的C语言程序,包括自定义函数sort()的实现。
#include <stdio.h>
#include <stdlib.h>
// 定义自定义函数sort()
void sort(int **p, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (**(p + i) > **(p + j)) {
// 交换两个指针指向的值
temp = **(p + i);
**(p + i) = **(p + j);
**(p + j) = temp;
}
}
}
}
int main() {
int n, i;
int *a, **p;
printf("请输入整数的个数n:");
scanf("%d", &n);
// 动态分配内存
a = (int*)malloc(n * sizeof(int));
p = (int**)malloc(n * sizeof(int*));
printf("请输入%d个整数:\n", n);
for (i = 0; i < n; i++) {
// 为每个指针分配内存
*(p + i) = (a + i);
scanf("%d", *(p + i));
}
// 调用自定义函数sort()
sort(p, n);
printf("排序后的结果为:\n");
for (i = 0; i < n; i++) {
printf("%d ", *(a + i));
}
// 释放内存
free(a);
free(p);
return 0;
}