Online Compiler C

#include <stdio.h> int digit_to_num(char c) { int digit, sum=0; if (c >= '0' && c <= '9') { digit = c - '0'; sum+=digit; } return sum; } int main(void) { int c; while ((c = getchar()) != '.') { printf("%d", digit_to_num(c)); } return 0; }
这段代码的功能是:从输入中逐个读取字符,遇到句点 '.' 时停止,并将每个数字字符转换为对应的整数值后输出。但代码存在一个逻辑问题。

- 函数 `digit_to_num` 只处理数字字符,对非数字字符返回 0。但你的代码在遇到非数字字符时也会输出 0,这可能不是你想要的行为。
- 另外,函数名和变量名暗示你想计算数字的和,但实际代码是逐个输出每个数字,而不是累加总和。请明确你的目标:是输出每个数字,还是计算所有数字的总和?