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

C语言拆分1-16位数字存入数组运行输出0问题求助

问题排查与修复

代码核心错误点

  • 所有for循环的终止条件写反,拆分逻辑完全不执行:
    • 第一层循环初始I=10,判断条件为I>100000000000000000,10远小于1e17,循环直接跳过
    • 内层J的循环、n的循环同样存在终止条件写反的问题,即使外层循环执行,内层也不会运行
  • 三层嵌套循环的设计逻辑错误,逐位拆分仅需单层循环即可实现,多余的嵌套会导致数组元素被重复覆盖
  • 未对数组做初始化操作,未赋值的元素会输出随机垃圾值

正确实现代码

long int number;
    
do
{
    number = get_long("number:\n");
}
while (number<1 || number>9999999999999999);
    
int numbers[16] = {0}; // 初始化数组所有元素为0
int n = 0;
long int temp = number; // 用临时变量操作避免修改原number值
// 从右到左逐位拆分
while (temp > 0 && n < 16) {
    numbers[n] = temp % 10;
    temp = temp / 10;
    n++;
}
    
printf("%i\n", numbers[1]);

实现说明

输入16时,第一次循环temp%10得到6存入numbers[0],temp变为1;第二次循环temp%10得到1存入numbers[1],符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:54:04