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

C语言printf无法打印整数k 奇数生成程序输出错误排查

异常原因
  • 核心bug是printf格式占位符和传入参数数量不匹配:你的提示输出语句printf("Bilangan genap dari 0 sampai %i adalah :\n");中使用了%i作为整数输出占位符,但没有将需要打印的变量k作为参数传入该printf调用。
  • printf是C语言的可变参数函数,出现上述参数缺失时不会自动补值,而是会直接从调用栈的对应内存位置读取随机数据,属于未定义行为,这就是你看到输出异常数字、和输入的k值不一致的根本原因。
  • 额外笔误:代码开头注释写的是奇数生成程序,但实际函数逻辑、交互提示都是输出0到k的偶数,属于注释和实际功能不符,不影响运行但建议同步修正。
  • 这类问题可以在编译时开启-Wall警告参数,编译器会直接提示占位符和参数不匹配的报错,提前在编译阶段定位问题,不用等到运行时排查。
修复方法

只需要在对应printf调用的参数列表末尾补上变量k即可,修复后的完整可运行代码如下:

#include <stdio.h>
#include <stdlib.h>
// even number generator with int k as the max number
void genap_generator(){
    int k;
    printf("Masukkan batas bilangan genap = ");
    scanf("%i", &k);
    // 补传k作为printf参数,匹配%i占位符
    printf("Bilangan genap dari 0 sampai %i adalah :\n", k);
    for (int i=0; i<=k; i+=2){
        printf("%i\n", i);
    }
}

int main(){
    genap_generator();
    system("pause");
    return 0;
}

内容的提问来源于stack exchange,提问作者Abdurrahman al hakim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:24:18