目录
解题思路:
- 题目要求:编写一个程序,可以一直接收键盘字符;
- 如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。
- 根据ASCII码,十进制数字65~90对应大写字母A~Z;十进制97~122对应小写字母a~z;
- 大写字母转换成对应小写字母,十进制加上32;小写字母转换成对应大写字母,十进制减去32;
- 先判断输入是否为字母,如果不是则不输出,如果是在做相应转换;
- 如果是其他的则不输出;
- 输入字符串的过程中 如果使用scanf函数 ,存在空格无法输入 的问题 可使用getchar()函数;
- while((c=getchar())!= EOF) 一边读取一边处理,不需要把字符串完全保存下来,当输入换行时结束程序;
EOF是什么?
- 文件结束指针”End of File ( EOF ),指读取数据库存放到记录集的结束指针.
- 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。
- EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。
- 除了表示文件结尾,EOF还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。
- 还有文件开始指针 Beginning of File (BOF),当EOF和BOF的值相等时 说明取出的数据为空 否则就是存在数据 ;
- ASCII表:
-
代码示例:
-
#include<stdio.h> #include<stdlib.h> int main() { char ch; while ((ch = getchar()) != EOF) { if ((ch >= 'A') && (ch <= 'Z')) printf("%c", ch + 32); else if ((ch >= 'a') && (ch <= 'z')) printf("%c", ch - 32); } printf("\n"); system("pause"); return 0; }
-
运行结果: