在线编译器 C

#include <stdio.h> int main() { char ch; int sum=0; while(scanf("%c",&ch)!=EOF){ if(ch=='.'){ break; } if (ch>='0'&&ch<='9'){ sum+=(ch-'0'); } } printf("&d\n",sum); return 0; }
这段代码的功能是从输入中读取字符,遇到小数点停止,并累加所有数字字符对应的数值,最后输出总和。但输出结果可能不正确。

- 第15行的 `printf("&d\n",sum);` 中,格式说明符写成了 `&d`,这会导致输出异常。C语言中正确的格式说明符是 `%d`,而不是 `&d`。
- 代码逻辑上,`while` 循环会持续读取字符直到文件结束或遇到小数点,但需要注意 `scanf` 读取字符时可能会读取到换行符等空白字符,不过这里不影响数字的判断。