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

编写C语言数组插入元素程序遇异常:输入非正整数终止但打印失败

问题分析与修复方案

嘿,我帮你找出代码里的两个关键问题啦,这就是为啥你看不到正确输入数值的原因:

1. 错误计算数组有效元素个数

你用int n = sizeof(data[i]);来获取数组长度,这完全不对哦!data[i]是单个int类型的元素,sizeof(data[i])得到的是int的字节数(通常是4),而不是你实际输入的元素个数。其实在第一个for循环结束后,变量i已经准确记录了有效元素的数量——因为每输入一个有效数i就加1,遇到<=0的数就break,直接用这个i就行。

2. 打印时错误输出了内存地址

你打印的时候写的是printf("%d ", &data[i]);,这里的&data[i]是取数组第i个元素的内存地址,不是元素的值!应该直接写data[i]才对。

修正后的完整代码

#include <stdio.h>
int main() {
    int data[100];
    int i;
    for (i = 0; i < 100; i++) {
        printf("Input your number:\n");
        scanf("%d", &data[i]);
        if (data[i] <= 0) {
            break;
        }
    }
    printf("Your array:");
    // 直接用循环结束后的i作为有效元素个数
    for (int j = 0; j < i; j++) {
        printf("%d ", data[j]); // 去掉&,直接访问元素值
    }
    return 0;
}

另外小提醒:我把第二个循环的变量改成了j,避免和第一个循环的i混淆,当然继续用i也可以,但分开用可读性更好~

内容的提问来源于stack exchange,提问作者Sơn Lê Hoàng Thái

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:37:55