在线编译器 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'` 和 `'A'+C` 的运算没有意义。另外,函数缺少闭合的大括号,导致语法错误。

- 函数 `upper` 应该直接处理传入的字符参数 `c`,而不是在内部重新读取输入。检查一下如何通过字符的 ASCII 值将小写字母转换为大写字母。
- 注意函数定义的大括号是否完整闭合,以及 `while` 循环的条件和循环体是否真的需要。