C语言编程:用指向指针的指针的方法对n个整数排序并输出。

要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出

用指向指针的指针的方法对n个整数排序并输出的具体编程步骤如下:

1、编写头函数:#include <stdio.h>。

2、编写条件函数:

void sort(int **p,int n)

{

int i,j,temp;

for(i=0;i<n-1;i++)

for(j=0;j<n-1-i;j++)

{

if(*p[j]>*p[j+1])//或者是*(*(p+j))>*(*(p+j+1))

{

temp=*p[j];

*p[j]=*p[j+1];

*p[j+1]=temp;

}

}

}

3、最后编写主函数:

int main()

{

void sort(int **,int );

int i,n,data[20],**p,*pstr[20];

scanf("%d",&n);

for(i=0;i<n;i++)

pstr[i]=&data[i];

for(i=0;i<n;i++)

scanf("%d",pstr[i]);

p=pstr;

sort(p,n);

for(i=0;i<n;i++)

printf("%d ",*pstr[i]);

return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-12
#include <stdio.h>  
#include <stdlib.h>  
#define MAXSIZE 100  
void swap(int*, int*);  
void sort(int**, int);  
int main(void)  
{  
    int i;  
    int n;  
    //整形数组  
    int array[MAXSIZE];  
    //指针数组  
    int *pArray[MAXSIZE];  
    printf("please enter n:\n");  
    scanf("%d", &n);  
    for (i = 0; i < n; ++i)  
    {  
        scanf("%d", &array[i]);  
        pArray[i] = &array[i];  
    }  
    sort(pArray, n);  
    for (i = 0; i < n; ++i)  
    {  
        printf("%d\n", *pArray[i]);  
    }  
    return 0;  
}  
//交换  
void swap(int *a, int *b)  
{  
    int temp = *a;  
    *a = *b;  
    *b = temp;  
}  
//排序  
void sort(int **array, int n)  
{  
    int *p;  
    int *q;  
    for (p = *array; p < *array + n; ++p)  
    {  
        for (q = p + 1; q < *array + n; ++q)  
        {  
            if (*p > *q)  
            {  
                swap(p, q);  
            }  
        }  
    }  
}

本回答被网友采纳

C语言编程:用指向指针的指针的方法对n个整数排序并输出。
3、最后编写主函数:int main(){ void sort(int **,int );int i,n,data[20],**p,*pstr[20];scanf("%d",&n);for(i=0;i<n;i++)pstr[i]=&data[i];for(i=0;i<n;i++)scanf("%d",pstr[i]);p=pstr;sort(p,n);for(i=0;i<n;i++)printf("%d ",*pstr[i]);return ...

...问题:用指向指针的指针方法对n个整数排序并输出。要求将排序单独写成...
函数指针是指向函数的指针变量。每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。函数指针”是指向函数的指针变量,因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。指针函数是指带指针的函数,即本质是一个函数。我们知道函数都又有返回类...

用指向指针的指针的方法对n个整数排序。要求将排序单独写成一个函数...
printf("%d\\n", ** (p+d));\/\/这里你是想显示出来排序后的数字 } void sort(int * num[],int n)\/\/冒泡排序,应该没错。{ int * t;int i,j,k;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(num[k]>num[j])\/\/num指向的是一个指针,必须加 k=j;if(k!=j){ ...

C语言 指针习题 用指向指针的指针的方法对n个字符串排序并输出。要求将...
C语言程序如下:include <stdio.h>#include <string.h>#include <malloc.h>#define N 100#define MAX 100void sort(char** str,int n){ for(int i = 0;i < n - 1;i++) { for(int j = 0;j < n - 1- i;j++) { if(strcmp(str[j], str[j + 1]) > 0...

几道简单的c\\c++题,紧急等待!!!
输入一行电报文字,任选两种输出方式:1.原文输出;2.将字母变成其下一个字母输出(如a变成b,b变成c……z变成a,其他字符不变)4.用指向指针的方法对n个整数排序并输出。要求将排序单独写成一个函数,整数在主函数中输入、输出。(注意用指向指针的方法,冒泡法的不要弄上来。)5.用指针和函数的...

输入3个整数,按由小到大的顺序输出.(用指针实现)
include <stdio.h>void main(){int a,b,c,x;int *pa,*pb,*pc;pa=&a;\/\/这里的指针前的星号去掉就行了pb=&b;\/\/pc=&c;\/\/三个都一样printf("请输入3个整数\\n");scanf("%d%d%d",pa,pb,pc);if(*pa>*pb){x=*pa;*pa=*pb;*pb=x;}if(*pa>*pc){x=*pa;*pa=*pc;*pc=...

如何用函数实现三个数的排序(用的是C语言)
scanf("%d%d%d",&a,&b,&c); sort(); printf("排序:%d < %d < %d\\n",a,b,c); return 0;} 二:指针 include <stdio.h>void sort(int *a, int *b, int *c) \/\/参数传递方式:地址传递{ int t; if(*a>*b) { t=*a;*a=*b;*b=t; } if(*b...

用指针实现由键盘输入10个整数将他们按由小到大的顺序排列
要使用指针在C语言中实现键盘输入10个整数并按由小到大的顺序排列,我们可以定义一个整型数组和相应的指针来操作这些整数。首先,通过循环读取用户输入的10个整数存储到数组中。然后,使用冒泡排序算法(或其他排序算法)对这些整数进行排序,排序过程中通过指针来访问和交换数组中的元素。示例代码片段(不...

c语言题:输入四个数a,b,c,d,按从大到小的顺序输出
这类问题一般用起泡法解决。首先编写程序包括头文件。定义数组n为4,主函数开始。设置整型变量i,j,k,指针p,临时变量temp。p指向数组a。输出提示信息要求输入n个数。使用for循环读取输入的n个整数。p指向数组a。输出原始数列。使用嵌套for循环进行冒泡排序。内层循环从i+1到n,比较p+i与p+j的元素...

C语言写出 ,输入4个整数,要求按由大到小的顺序输出?
1)数组指针:指向要排序的数组 2)数组的元素个数 3)数组的元素字节长度 4)函数指针:指向我们定义的一个比较两个元素大小的函数 若是要 qsort( ) 做由小到大的排序,我们定义的函数的返回值和相应的条件必须是:返回值条件 === < 0*a<*b 0*a == *b > 0*a>*b 要达到以上的要求其...

相似回答