Online Compiler C

// 计算以'.'结尾的文本中所有数字字符的数值之和 #include <stdio.h> int main() { char ch; int sum=0; while(1)//无限循环 { scanf("%c",&ch); if(ch=='.')//遇到.终止 { break; } if (ch >= 'A' && ch <= 'Z')//输入字符;大写英文字母('A' ~ 'Z') { ch = ch + ('a' - 'A'); // 大写转换为小写 } else if (ch >= 'a' && ch <= 'z') { ch = ch - ('a' - 'A'); // 小写转换为大写 } printf("%c", ch); return 0; }
这段代码试图读取字符直到遇到句号,并转换大小写后输出。但存在几个问题。

首先,代码中 `return 0;` 放在了循环内部,导致程序在第一次输出后就结束,无法继续读取后续字符。循环体中的 `return 0;` 应该放在循环结束后。

其次,题目要求计算所有数字字符的数值之和,但代码中完全没有对数字字符进行判断和累加,而是做了大小写转换。你需要添加对数字字符 `'0'` 到 `'9'` 的判断,并将它们的数值(例如 `'5'` 的数值是5)累加到 `sum` 中。

- 检查 `return 0;` 的位置,它不应该出现在循环内部。
- 添加对数字字符的判断,并将字符转换为对应的整数值(例如 `ch - '0'`)加到 `sum` 上。