Online Compiler C

#include <stdio.h> char upper(char c) { int position; if (c >= 'a' && c <= 'z') { position = c - 'a'; c = 'A' + position; } else { if (c >= 'A' && c <= 'Z') { position = c - 'A'; c = 'a' + position; } } return c; } int main() { char a; a = getchar(); printf("%c", upper(a)); return 0; }
这段代码定义了一个 `upper` 函数,它试图将小写字母转换为大写,将大写字母转换为小写。但实际上函数名和功能不一致,容易引起误解。

- 函数 `upper` 实际上做了大小写互换,而不是只转大写。如果输入小写字母,它转成大写;如果输入大写字母,它转成小写。这相当于一个大小写切换函数。
- 在 `main` 中,程序读取一个字符,然后调用 `upper` 并输出结果。

提示:
- 检查函数名 `upper` 是否准确描述了它的行为。如果希望只将小写转大写,那么当输入大写字母时应该直接返回原字符,而不是转换。
- 注意 `else` 分支的逻辑:当前代码对大写字母也做了转换,这导致函数变成了大小写互换。思考一下如何修改条件,使得只有小写字母被转换,其他字符保持不变。