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

如何将6位数字输入存入整数数组,使数组元素为单个数字?

将6位数字拆分到整数数组的解决方案

你的原代码存在问题:scanf("%d%d%d%d%d%d", &input);中,&input是整个数组的指针(类型为int (*)[7]),而每个%d需要单个int变量的地址(int*),类型不匹配会导致未定义行为。以下是两种可行的解决方法:

方法一:直接按单个数字读取

利用scanf的%1d格式限定符,强制每次读取1位数字,直接存入数组对应位置:

#include <stdio.h>

int main(void)
{
    int input[7] = {0};

    printf("请输入6位数字:");
    // 逐个读取单数字,存入数组的前6个元素
    scanf("%1d%1d%1d%1d%1d%1d", &input[0], &input[1], &input[2], &input[3], &input[4], &input[5]);

    // 验证结果
    for (int i = 0; i < 6; i++) {
        printf("%d ", input[i]);
    }
    printf("\n");

    return 0;
}

%1d会自动忽略输入中的空白字符(如果有的话),但你要求输入无标点空格,所以连续输入6位数字即可被正确拆分。

方法二:先读整数值再拆分数字

如果能确保输入是有效的6位整数,可先读取整个数字,再通过数学运算拆分每一位:

#include <stdio.h>

int main(void)
{
    int input[7] = {0};
    int num;

    printf("请输入6位数字:");
    scanf("%d", &num);

    // 拆分每一位到数组
    input[0] = num / 100000;        // 提取十万位
    input[1] = (num / 10000) % 10;  // 提取万位
    input[2] = (num / 1000) % 10;   // 提取千位
    input[3] = (num / 100) % 10;    // 提取百位
    input[4] = (num / 10) % 10;     // 提取十位
    input[5] = num % 10;            // 提取个位

    // 验证结果
    for (int i = 0; i < 6; i++) {
        printf("%d ", input[i]);
    }
    printf("\n");

    return 0;
}

这种方法需要确保输入的数字在int的范围内(一般int能覆盖到2^31-1,6位数完全没问题),如果输入位数不符,需要额外做合法性判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:32:36