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

C语言递归打印数组代码可正常输入但无输出问题求助

问题分析
  • 递归参数传递错误:print 函数第一个形参为数组(本质是指针),但调用时传入的 a[i+1] 是int类型的数组元素值,会被系统当作内存地址访问,属于非法内存访问,会直接触发程序崩溃。同时因为C语言标准输出默认是行缓冲,你的printf没有加换行符,程序崩溃后缓冲区内容没有刷新,所以看不到任何打印结果。正确传参应该传入下一个元素的地址 a+1 或 &a[1]。
  • 函数返回值逻辑错误:你声明print返回值为int,但递归终止条件size==0的分支没有返回任何值,且print本身的功能是打印数组,不需要返回值,直接将返回值类型改为void即可,同时删除main函数中最后用printf打印print返回值的冗余代码。
  • 打印格式不符合预期:打印单个元素时使用"%d"没有加空格,最终输出的数字会直接拼接,和你预期的空格分隔效果不符。
  • 冗余变量:print函数内定义的int i=0完全冗余,每次递归都会重置i为0,直接访问a[0]即可。
修正后可运行代码
#include <stdio.h>

void print(int a[], int size) {
    if (size != 0) {
        // 最后一个元素不加空格,避免末尾多余空格
        if (size == 1) {
            printf("%d", a[0]);
        } else {
            printf("%d ", a[0]);
        }
        print(a + 1, size - 1);
    }
}

int main() { 
    int a[100], size;
    printf("Enter array size: ");
    scanf("%d", &size);
    for (int i = 0; i < size; i++) {
        printf("Enter number u want to enter: ");
        scanf("%d", &a[i]);
    }
    print(a, size);
    return 0;
}
运行效果验证

输入数组大小为3,依次输入元素5、4、2时,程序会直接输出5 4 2,符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:54:04