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

#include <stdio.h> int main() { char c; do { 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); }else{ printf("%c",c); } } while (c != '.'); return 0; }
这段代码的功能是:从输入中逐个读取字符,如果是大写字母则转换为小写,如果是小写字母则转换为大写,其他字符保持不变,直到遇到句点(.)为止。

你的代码逻辑基本正确,但有一个常见问题需要注意:

- 当输入包含换行符(如按下回车键)时,`scanf` 会读取到换行符 `'\n'`,这会导致程序多输出一个换行符,并且可能影响循环的判断。你需要考虑如何处理这些空白字符。

- 另外,`while (c != '.')` 的条件判断是在循环体执行之后进行的,这意味着即使输入了句点,它也会被处理并输出一次。这可能是你期望的行为,但需要确认是否符合题目要求。