| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 325 人关注过本帖
标题:求大佬教教。不知道为什么排序不了
只看楼主 加入收藏
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
结帖率:50%
  已结贴   问题点数:18  回复次数:11   
求大佬教教。不知道为什么排序不了
# include <stdio.h>
# include <malloc.h>

void caonma(int ***c, int ***m)  //输出函数
{
    int g;

    for (g = 0; g < *m; g++)  //输出
    {
        printf("%d\n", c[g]);
    }

}

void sort(int ** a, int ** len)   //冒泡排序
{
    int i, j, t;

    for (i = 0; i < *len - 1; ++i)
    {
        for (j = 0; j < *len - 1 - i; ++j)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    caonma(a, len); //发送子参数的形参
}

void dynamic(int * l)   //分配动态空间
{
    int i, x;
    int * p = (int *)malloc(*l * sizeof(int));

    for (i = 0; i < *l; i++)    // 对分配的空间赋值
    {
        printf("对第%d赋值:  ", i + 1);

        scanf_s("%d", &x);

        p[i] = x;
    }

    sort(p, l);//发送子参数的形参

}

int main()   //主函数
{
    int  v;  

    printf("输入多少个元素:  ");

    scanf_s("%d", &v); //输入元素的多少

    dynamic(&v);

    return 0;
}
2019-04-15 00:20
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册

新手上路
2019-04-15 00:26
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 

新手上路
2019-04-15 00:26
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册

新手上路
2019-04-15 00:29
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 

新手上路
2019-04-15 00:29
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:426
专家分:422
注 册:2018-9-4
  得分:6 
没啥大问题,就是就是参数数据类型设置有问题
程序代码:
#include <stdio.h>
#include <malloc.h>

//这个函数需要的是数组地址以及元素个数
void caonma(int *c, int m)  //输出函数
{
    int g;

    for (g = 0; g < m; g++)  //输出
    {
        printf("%d\n", c[g]);
    }

}

//这个函数需要的是数组地址以及元素个数
void sort(int * a, int len)   //冒泡排序
{
    int i, j, t;

    for (i = 0; i < len - 1; ++i)
    {
        for (j = 0; j < len - 1 - i; ++j)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    caonma(a, len); //发送子参数的形参
}

//这个函数需要的是元素个数
void dynamic(int l)   //分配动态空间
{
    int i, x;
    int * p = (int *)malloc(l * sizeof(int));

    for (i = 0; i < l; i++)    // 对分配的空间赋值
    {
        printf("对第%d赋值:  ", i + 1);

        scanf_s("%d", &x, 1);

        p[i] = x;
    }

    sort(p, l);//发送子参数的形参

}

int main()   //主函数
{
    int  v;  

    printf("输入多少个元素:  ");

    scanf_s("%d", &v); //输入元素的多少

    dynamic(&v);

    return 0;
}
2019-04-15 12:38
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:426
专家分:422
注 册:2018-9-4
  得分:0 
没啥大问题,就是就是参数数据类型设置有问题
程序代码:
#include <stdio.h>
#include <malloc.h>

//这个函数需要的是数组地址以及元素个数
void caonma(int *c, int m)  //输出函数
{
    int g;

    for (g = 0; g < m; g++)  //输出
    {
        printf("%d\n", c[g]);
    }

}

//这个函数需要的是数组地址以及元素个数
void sort(int * a, int len)   //冒泡排序
{
    int i, j, t;

    for (i = 0; i < len - 1; ++i)
    {
        for (j = 0; j < len - 1 - i; ++j)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    caonma(a, len); //发送子参数的形参
}

//这个函数需要的是元素个数
void dynamic(int l)   //分配动态空间
{
    int i, x;
    int * p = (int *)malloc(l * sizeof(int));

    for (i = 0; i < l; i++)    // 对分配的空间赋值
    {
        printf("对第%d赋值:  ", i + 1);

        scanf_s("%d", &x, 1);

        p[i] = x;
    }

    sort(p, l);//发送子参数的形参

}

int main()   //主函数
{
    int  v;  

    printf("输入多少个元素:  ");

    scanf_s("%d", &v); //输入元素的多少

    dynamic(&v);

    return 0;
}
2019-04-15 12:38
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 
回复 7楼 lxk1732942
我还是不明白,为什么指针可以接指针的,为什么可以不用多级指针

新手上路
2019-04-15 14:28
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
  得分:6 
//len是一个二级指针,*len还是一个指针,并不是数组长度,自己梳理一下这些变量表示什么意思
void sort(int ** a, int ** len)   //冒泡排序
{
    int i, j, t;

    for (i = 0; i < *len - 1; ++i)
    {
        for (j = 0; j < *len - 1 - i; ++j)
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    caonma(a, len); //发送子参数的形参
}
2019-04-15 16:46
a1156642617
Rank: 1
来 自:广东
等 级:新手上路
帖 子:10
专家分:0
注 册:2019-4-11
  得分:0 
回复 7楼 lxk1732942
惹。还是错的

新手上路
2019-04-15 20:40







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026680 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved