Онлайн компилятор C

#include <stdio.h> int main() { char c; do { c=getchar; if (c >= 'A' && c <= 'Z') { int letter = c + 32; printf("%c", letter); } else if (c >= 'a' && c <= 'z') { int letter = c - 32; printf("%c", letter); } printf("%c", c); } } while (c != '.') ; return 0; }
这段代码试图读取字符并转换大小写,但存在几个问题。

- 代码中 `c=getchar;` 缺少函数调用的括号,应该是 `c = getchar();`。这是导致编译错误的主要原因。
- `do-while` 循环的结构有误,花括号位置不正确。`do` 后面的花括号应该包含整个循环体,而 `while` 条件应该在花括号之后。当前代码中 `while` 被放在了花括号外面,导致逻辑混乱。
- 每次循环中,无论字符是否字母,都会执行最后的 `printf("%c", c);`,这会导致原字符被重复输出一次。你需要检查这个输出是否必要。