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

#include <stdio.h> int main() { char c; do { c=getchar scanf("%c", &c); 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; }
这段代码试图读取字符并转换大小写,但存在多个语法错误和逻辑问题。

- 第8行 `c=getchar` 缺少分号,而且后面又调用了 `scanf`,导致重复读取输入。
- `do-while` 循环的结构不正确:`while` 条件写在了循环体外面,并且 `return 0;` 也放在了循环外部,导致语法错误。
- 每次循环都会先读取一个字符,然后立即输出原始字符(第17行),导致每个字符被输出两次,一次是转换后的,一次是原始字符。