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

C语言加法程序计算结果异常问题求助

C语言加法程序计算结果异常问题求助

嗨,我来帮你排查这个加法程序的问题啦!

先看你遇到的情况:输入1和3,结果输出1,这明显不对,问题主要出在你的scanf格式串上,咱们一步步拆解:

你的代码里写的是:

scanf("%2lf,%2lf", &q, &r);

这里有两个关键问题:

  • 格式串里的逗号,是必须严格匹配输入内容的,也就是说你输入的时候必须写成1,3(两个数用逗号直接隔开),如果是分开输入1再输3,或者用空格隔开,scanf会因为找不到逗号而停止读取第二个数,这时候r的值就还是未初始化的垃圾值(刚好这次是0,所以1+0=1)。
  • 另外%2lf里的2是宽度限制,意思是最多读取2个字符作为浮点数,这个对你输入单个数字影响不大,但如果输入超过两位的数(比如123),只会读取前两位,一般加法程序不需要这个限制,建议去掉。

给你几个修改方案:

方案1:允许用户用空格/回车分隔输入(更符合常规输入习惯)

把scanf的格式串改成这样:

scanf("%lf %lf", &q, &r);

这样用户不管是输入1 3还是先输1回车再输3,都能正确读取两个数。

方案2:保留逗号分隔,但要明确输入格式

如果一定要用逗号分隔,那得确保输入时严格按照数字,数字的格式(比如输入1,3),同时去掉没必要的宽度限制,改成:

scanf("%lf,%lf", &q, &r);

额外优化建议

  • 给变量初始化,避免读取失败时出现奇怪的垃圾值:
    double q=0, r=0, s=0;
    
  • 可以检查scanf的返回值,判断是否成功读取了两个数,及时提示用户输入错误:
    if (scanf("%lf %lf", &q, &r) != 2) {
        printf("输入有误,请输入两个数字哦!\n");
        return 1;
    }
    

修改后再试试,应该就能得到正确的结果啦!

备注:内容来源于stack exchange,提问作者Karthikey Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:23:11