You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让C语言函数返回数组?修复数字转数组的代码问题

问题修复:将数字每一位存入数组并按顺序输出

先梳理你失效代码里的核心错误:

  1. 位数计算逻辑完全错误:for(d=0; num<0;d++); 条件是num<0,输入正数时循环直接终止,d保持0;而且循环后的分号让num /=10变成了单独执行,直接把原数字改成0,后续操作全错。
  2. 数组操作越界:a[d]=store(num); 和最后的printf("%d \n",a[d]); 都用到了下标d,但数组的有效下标是0到d-1,这会访问非法内存,导致垃圾值输出。
  3. 递归函数存在未定义行为:当num=0时,store函数没有返回值,调用它会产生不可预料的结果。
  4. 循环存储逻辑错误:循环里反复用同一个被修改后的num调用store,无法依次获取每一位数字。

修复方案一:基于递归的实现

保留你原有的递归思路,调整逻辑来正确填充数组:

#include<stdio.h>

// 递归函数:填充数组,返回当前填充的下标位置
int fillArray(int num, int arr[], int index) {
    if (num == 0) {
        return index;
    }
    // 先递归处理高位
    index = fillArray(num / 10, arr, index);
    // 把当前位存入数组
    arr[index++] = num % 10;
    return index;
}

int main() {
    int num, temp, digitCount = 0;
    printf("Enter number: ");
    scanf("%d", &num);

    // 处理num为0的特殊情况
    if (num == 0) {
        printf("0\n");
        return 0;
    }

    // 先计算数字的位数
    temp = num;
    while (temp != 0) {
        digitCount++;
        temp /= 10;
    }

    // 创建对应长度的数组
    int arr[digitCount];
    // 调用递归函数填充数组
    fillArray(num, arr, 0);

    // 按要求格式输出
    for (int i = 0; i < digitCount; i++) {
        printf("%d", arr[i]);
        if (i != digitCount - 1) {
            printf(" ");
        }
    }
    printf("\n");

    return 0;
}

修复方案二:非递归实现(更直观)

如果不需要递归,用循环直接处理更简单:

#include<stdio.h>

int main() {
    int num, temp, digitCount = 0;
    printf("Enter number: ");
    scanf("%d", &num);

    if (num == 0) {
        printf("0\n");
        return 0;
    }

    // 计算位数
    temp = num;
    while (temp != 0) {
        digitCount++;
        temp /= 10;
    }

    int arr[digitCount];
    temp = num;
    // 从高位到低位填充数组
    for (int i = digitCount - 1; i >= 0; i--) {
        arr[i] = temp % 10;
        temp /= 10;
    }

    // 输出结果
    for (int i = 0; i < digitCount; i++) {
        printf("%d", arr[i]);
        if (i != digitCount - 1) {
            printf(" ");
        }
    }
    printf("\n");

    return 0;
}

测试示例

输入687544,输出:6 8 7 5 4 4
输入123,输出:1 2 3

内容的提问来源于stack exchange,提问作者Dorissss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:10:32