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

C语言算术运算代码问题:输入变量b始终默认显示为0

问题分析与解决方法

问题根源

代码中读取运算符的语句scanf("%s", &c)存在致命错误:

  • %s是C语言用于读取字符串的格式符,它会自动在输入字符后追加字符串终止符\0并写入内存。但c是单个char类型变量,仅能存储1个字符,写入\0时会发生内存溢出,直接覆盖相邻变量b的内存空间,导致b的值被强制改为0。

修正方案

将读取运算符的语句替换为:

scanf(" %c", &c);

修正说明

  1. 使用%c格式符匹配单个char类型变量,完全符合读取单个运算符的需求;
  2. 在%c前添加空格,是为了跳过输入缓冲区中残留的换行符(之前输入整数后按下回车留下的),避免误将换行符当作运算符读取。

修正后的完整代码

#include <stdio.h>

int main()
{
    int a,b;
    printf("Enter the I no. : ");
    scanf("%d",&a);
    printf("Enter the II no. : ");
    scanf("%d",&b);

    char c;
    printf("Enter the Operation : ");
    scanf(" %c", &c);

    switch (c)
    {
    case '+':
        printf("Addition of %d and %d = %d",a,b,a+b);
        break;
    case '-':
        printf("Subtraction of %d and %d = %d",a,b,a-b);
        break;
    case '*':
        printf("Multiplication of %d and %d = %d",a,b,a*b);
        break;
    case '/':
        printf("Division of %d and %d = %d",a,b,a/b);
        break;
    }
    return 0; // 补充main函数返回值,符合C语言标准规范
}

内容的提问来源于stack exchange,提问作者Vishal Kumar Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50