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

求10以下3或5的倍数的C语言代码及输出异常求助

帮你排查C语言代码的输出问题

嘿,刚学C语言遇到这种问题太正常了,我帮你拆解下代码里的几个关键问题,解决后就能正常输出啦:

1. 最核心的输出错误:误用取地址符&

你在printf里写了printf("%d\n", &i)和printf("sum is: %d\n", &s),这里的&是取地址运算符,它会输出变量在内存中的地址值,而不是变量本身的数值!这就是你输出乱码/奇怪数字的根本原因。

正确的写法应该直接用变量名:

printf("%d\n", i);  // 输出i的数值,不是地址
// ...
printf("sum is: %d\n", s);  // 同理输出s的数值

2. void main()不符合C语言标准

C标准规定main函数的返回类型必须是int,void main()是某些编译器的非标准扩展,为了兼容性和规范性,建议改成:

int main() {
    // 你的代码逻辑...
    return 0;  // 表示程序正常结束
}

3. 非标准头文件conio.h的兼容性问题

conio.h是DOS系统时代的老头文件,现代编译器(比如GCC、Clang)基本不支持它,里面的clrscr()(清屏)和getch()(等待输入)都是非标准函数。如果想让代码在现代环境运行,可以做这些替换:

  • 清屏:用system("cls")(Windows)或system("clear")(Linux/macOS),但需要额外包含#include <stdlib.h>
  • 等待输入:用标准的getchar()替代getch(),不过要注意如果前面有printf的换行,可能需要先处理缓冲区的残留字符

修正后的完整代码

#include <stdio.h>
#include <stdlib.h>  // 用于system函数

int main() {
    int i, s = 0;
    system("cls");  // Windows清屏,Linux/macOS换成system("clear")
    for(i = 1 ; i <= 5 ; i++) {
        if ((i % 3 == 0) || (i % 5 == 0)) {
            printf("%d\n", i);  // 去掉&,输出变量值
            s = s + i;
        }
    }
    printf("sum is: %d\n", s);  // 同样去掉&
    getchar();  // 替代getch(),等待用户输入后退出
    return 0;
}

运行这段修正后的代码,就能正确输出符合条件的数字(3、5)以及它们的和(8)啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:23:48