输入字符判断字母、数字、其它字符数量中字符输入问题
本帖最后由 CCCS 于 2021-3-7 00:50 编辑#include<stdio.h>
int main()
{
int i,n;
char c;
int letters=0,digit=0,others=0;
n = (int)getchar(); //输入循环次数 n
for(i=1;i<=n;i++)
{
c = getchar();
if(c>='a'&&c<='z'||c>='A'&&c<='Z') //判断是否为字母
letters++; //字母数量加一
else if(c>='0'&&c<='9') //判断是否为数字
digit++; //数字数量加一
else
others++; //其它字符加一
}
printf("letter=%d, digit=%d, other=%d\n",letters,digit,others);
return 0;
}
10 //输入循环次数为 n = 10
aZ & //}这里的输入(字母、数字、空格、回车)
09 Az //}已经有十个,但是回车后还是不能够输出还需要继续输入是为什么呢???
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
letter=4, digit=24, other=21
Press any key to continue #include<stdio.h>
int main()
{
int i,n;
char c=' ';
int letters=0,digit=0,others=0;
printf("请输入统计个数");
n = (int)getchar()-48;//输入循环次数 n
for(i=1;i<=n;i++)
{
while((c= getchar())=='\n')
{
}
printf("%c\n",c);
if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z')) //判断是否为字母
letters++; //字母数量加一
else if((c>='0')&&(c<='9')) //判断是否为数字
digit++; //数字数量加一
else
others++;
//其它字符加一
}
printf("letter=%d, digit=%d, other=%d\n",letters,digit,others);
return 0;
}
1 c没必要弄成数组你要是非得弄成数组下边的c是不能单独用的,要写成c的格式
2getchar()输入的数字是字符,ascii码是48-57转换成整数也是48-57,所以减去48就变成和实际输入的数一样的数
3getchar()是会把缓冲区的数据传给c的,具体的可以百度getchar缓冲区,网上有一堆解释,所以要用while把缓冲区的回车去掉
如果觉得有帮助并且看懂了的话请设个最佳 洋洋痒 发表于 2021-3-7 10:07
1 c没必要弄成数组你要是非得弄成数组下边的c是不能单独用的,要写成c的格式
2getchar()输入的数字是字 ...
谢谢
页:
[1]