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

如何对存储为char类型的数字执行sqrt平方根函数运算?

问题根因

你遇到的计算错误核心原因是 char类型存储的数字字符实际保存的是对应ASCII编码值,而非数字本身的数值:

  • 数字字符'0'`'9'`对应的ASCII十进制值为4857,你直接将input传入sqrt函数时,实际参与运算的是ASCII值,比如input为'5'时,实际计算的是sqrt(53),自然无法得到正确结果。
修复方案

只需要先把数字字符转换为对应的整数值再传入sqrt即可,转换逻辑非常简单:利用ASCII码中数字字符连续排列的特性,用input - '0'即可得到对应整数值。修改后的代码片段如下:

if ((input >= '0') && input <= '9'){
    // 将字符转为对应整数
    int digit_val = input - '0';
    double squareRoot = sqrt(digit_val);
    printf ("%c is a digit.\nThe square root of %d is %0.2lf", input, digit_val, squareRoot);
}

额外注意:原代码中printf的第二个占位符用了%c,修改后替换为%d输出整数值,符合打印数字的语义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:57:03