Online Compiler C

#include <stdio.h> char upper(char c){ while((c=getchar())!='.'){ int C=c-'A'; c='a'+C; } return c; int main() { char x,answer; scanf("%c",&x); answer = upper(x); printf("%c",answer); return 0; }
这段代码试图将输入的小写字母转换为大写字母,但存在几个问题。

首先,函数 `upper` 内部使用了 `getchar()` 循环读取输入,而不是处理传入的参数 `c`。这导致函数会不断从标准输入读取字符,直到遇到句点,并且每次读取后都尝试将字符转换为小写(注意:代码中 `c='a'+C` 实际上是把大写字母转成小写字母,而不是小写转大写)。此外,函数缺少闭合的花括号,导致编译错误。

- 函数 `upper` 应该直接处理传入的字符参数 `c`,而不是在内部重新读取输入。检查函数参数的使用方式。
- 注意转换逻辑:大写字母和小写字母的 ASCII 码差值固定('a'-'A'),但你的代码中 `c='a'+C` 是把大写字母转成了小写字母。思考如何将小写字母转成大写字母。