注册 登录
编程论坛 C语言论坛

malloc申请空间失败

的v吗 发布于 2022-05-26 12:49, 800 次点击
程序代码:
#include <stdio.h>
#include <malloc.h>
void swap(int* x, int* y)
{
    int t;
    t = *x;
    *x = *y;
    *y = t;
}
void rank(int* nums, int size)
{
    for (int i = 0; i < size; i++)
        for (int n = 0; n < size - i; n++)
            if (nums[i] > nums[i + 1])
                swap(&nums[i], &nums[i + 1]);
}
int main()
{
    printf("请先输入您要输入的数组长度\n");
    int size;
    scanf_s("%d", &size);
    int* p = (int*)malloc(size * sizeof(int));
    printf("请输入您要输入的一组数\n");
    for (int i = 0; i < size; i++)
    {
        scanf_s("%d", p);
        p++;
    }
    rank(p, size);
    for (int i = 0; i < size; i++)
    {
        printf("%d ", *p);
        p++;
    }
    return 0;
}
1 回复
#2
rjsp2022-05-26 16:36
第一,要讲出题目要求,也就是你想完成什么功能
第二,需要给出你的输入数据

程序代码:
#define _CRT_SECURE_NO_WARNINGS // 仅VC需要此宏

#include <stdio.h>
#include <stdlib.h>

void swap( int* x, int* y )
{
    int t = *x;
    *x = *y;
    *y = t;
}
void rank( int nums[], size_t size )
{
    for( size_t i=0; i!=size; ++i )
        for( size_t j=0; j+1!=size; ++j )
            if( nums[j] > nums[j+1] )
                swap( &nums[j], &nums[j+1] );
}
int main( void )
{
    size_t size;
    printf( "请先输入您要输入的数组长度: " );
    scanf( "%zu", &size );

    int* p = malloc( size * sizeof(*p) );

    printf("请输入您要输入的一组数\n");
    for( size_t i=0; i!=size; ++i )
        scanf( "%d", &p[i] );

    rank( p, size );
    for( size_t i=0; i!=size; ++i )
        printf( "%d ", p[i] );
}


输入
10
1 3 5 7 9 8 6 4 2 0
输出
0 1 2 3 4 5 6 7 8 9

1