Online Compiler C

#include <stdio.h> char upper(char c){ if((c)!='.'){ int C=c-'a'; c='A'+C; } return c; } int main() { char x,answer; while((x=getchar())!='.'){ answer=upper(x); printf("%c",answer); } return 0; }
这段代码的功能是:从输入中读取字符,遇到句点 '.' 时停止,并将每个小写字母转换为大写字母后输出。但代码存在一个问题。

- 你的 `upper` 函数没有检查字符是否真的是小写字母。如果输入的是大写字母、数字或其他符号,`c - 'a'` 会得到负数或超出范围的值,导致转换错误。例如,输入 'A' 会变成 'A' - 'a' = -32,然后 'A' + (-32) 得到错误字符。
- 提示:在转换前,应该先判断字符是否在 'a' 到 'z' 的范围内,只有小写字母才进行转换,其他字符保持不变。