在线编译器 C

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

代码中存在一个逻辑问题:函数 `digit_to_num` 中的变量 `sum` 和累加操作是多余的,因为每次只处理一个字符,不需要累加。另外,对于非数字字符,函数返回 0,这可能导致输出中出现多余的 0。

- 检查 `digit_to_num` 函数:对于非数字字符,应该如何处理?是否应该返回一个特殊值(如 -1)或直接不打印?
- 思考 `main` 函数中的循环:当遇到非数字字符时,你希望程序做什么?是跳过它、打印提示,还是其他行为?