题目:BC35 判断字母
描述
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。
输入描述:
输入包括一个字符。
输出描述:
输出该字符是字母(YES)或不是(NO)。
示例1
输入:H
输出:YES
示例2
输入:9
输出:NO
代码:
#include<stdio.h>
int main() {int ch = 0;while ((ch = getchar()) != EOF) {if ((ch >= 'a') && (ch <= 'z') || (ch >= 'A') && (ch <= 'Z')){printf("YES");}else{printf("NO");}getchar(); //1号位}
}
考点:getchar()函数
getchar()是在输入缓冲区内读取数据,读取的过程如下:
开始键盘还未输入时,输入缓冲区还没有内容,此时表现为光标闪烁等待输入。
输入一个字符(如A)后敲回车,此时缓冲区内的内容为[A \n]。
getchar()第一次拿到[A]并显示在桌面上。
getchar()第二次拿到[\n]
因此这道题在1号位处需要设置一个getchar()函数来吸收[\n],阻止影响结果
补充:scanf()的返回值为实际获取到的数据元素的个数,若获取失败则返回EOF。
scanf默认读到空格结束
方法2:使用库行数isalpha()
该函数是专门用来判断是否为字母的函数,是字母返回非0值,不是则返回0
int main()
{int ch = 0;while((ch=getchar()) != EOF){//使用库函数if(isalpha(ch))printf("YES\n");elseprintf("NO\n");getchar();} return 0;
}