Online Compiler C

#include <stdio.h> int main(void) { char c; while((c=getchar())!=EOF) {if(c>='A&&c<='Z'){ c+=32; }else if(c>='a'&&c<='z') {c-=32;} putchar(c); if (c=='.'){ break; } } return 0; }
这段代码试图将输入中的大写字母转为小写、小写字母转为大写,并在遇到句点时停止。但代码中存在一个关键错误。

- 第5行条件判断中,`c>='A&&c<='Z'` 缺少了右单引号,导致条件永远不成立。应检查所有字符常量的引号是否成对出现。
- 变量 `c` 被声明为 `char` 类型,但 `getchar()` 返回 `int` 类型。当 `EOF` 是负数时,`char` 可能无法正确存储,导致循环条件判断出错。考虑将 `c` 的类型改为 `int`。