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

C语言用scanf单次%d输入能否给两个变量赋相同输入值

C语言输入值保留与逻辑实现方案

核心疑问解答

单个%d格式符在scanf中仅能对应一个变量地址,无法一次性为两个变量赋值。要解决统计位数时原始值被修改的问题,只需在修改N前定义一个额外变量存储原始值的副本即可。

现有代码问题梳理

  • 变量K未初始化,直接进行自增运算会导致位数计算结果异常
  • 输入范围判断逻辑错误:原有条件N<=1 || N>=999999999会将合法边界值1、999999999判定为错误输入,不符合需求
  • 缺失判断“N的各位数字是否包含K”的实现逻辑

修正后可运行代码

#include <stdio.h>
int main()
{
    int K = 0, N, raw_N;
    scanf("%d", &N);
    // 输入合法性校验
    if (N < 1 || N > 999999999)
    {
        printf("Wrong Input\n");
        return 0;
    }
    // 存储原始输入值副本
    raw_N = N;
    // 统计数字位数K
    do
    {
        N = N / 10;
        K++;
    } while (N != 0);
    // 校验各位是否包含K
    int temp = raw_N;
    int has_k = 0;
    while (temp > 0)
    {
        if (temp % 10 == K)
        {
            has_k = 1;
            break;
        }
        temp = temp / 10;
    }
    printf(has_k ? "Yes\n" : "No\n");
    return 0;
}

实现说明

  • 新增raw_N变量存储原始输入值,统计位数时修改临时的N变量,不影响原始值使用
  • 修正了输入范围判断逻辑,符合1≤N≤999999999的要求
  • 补充了逐位匹配逻辑,遍历原始值的每一位与K比对,输出对应结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:48:00