鱼C论坛

 找回密码
 立即注册
查看: 1877|回复: 3

[已解决]输入字符判断字母、数字、其它字符数量中字符输入问题

[复制链接]
发表于 2021-3-7 00:40:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 CCCS 于 2021-3-7 00:50 编辑

#include<stdio.h>
int main()
{
        int i,n;
    char c[10000];
        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
最佳答案
2021-3-7 10:07:40
1 c没必要弄成数组你要是非得弄成数组下边的c是不能单独用的,要写成c[x]的格式
2getchar()输入的数字是字符,ascii码是48-57转换成整数也是48-57,所以减去48就变成和实际输入的数一样的数
3getchar()是会把缓冲区的数据传给c的,具体的可以百度getchar缓冲区,网上有一堆解释,所以要用while把缓冲区的回车去掉

如果觉得有帮助并且看懂了的话请设个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-7 09:57:58 | 显示全部楼层
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i,n;
  5.         char c=' ';
  6.         int letters=0,digit=0,others=0;
  7.         printf("请输入统计个数");
  8.         n = (int)getchar()-48;//输入循环次数 n
  9.         for(i=1;i<=n;i++)
  10.         {
  11.                 while((c= getchar())=='\n')
  12.                 {

  13.                 }
  14.                 printf("%c\n",c);
  15.                 if((c>='a')&&(c<='z')||(c>='A')&&(c<='Z'))                        //判断是否为字母
  16.                     letters++;        //字母数量加一
  17.                 else if((c>='0')&&(c<='9'))                                                //判断是否为数字
  18.                     digit++;        //数字数量加一
  19.                 else
  20.                     others++;
  21.                       //其它字符加一
  22.         }
  23.          printf("letter=%d, digit=%d, other=%d\n",letters,digit,others);
  24.         return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-7 10:07:40 | 显示全部楼层    本楼为最佳答案   
1 c没必要弄成数组你要是非得弄成数组下边的c是不能单独用的,要写成c[x]的格式
2getchar()输入的数字是字符,ascii码是48-57转换成整数也是48-57,所以减去48就变成和实际输入的数一样的数
3getchar()是会把缓冲区的数据传给c的,具体的可以百度getchar缓冲区,网上有一堆解释,所以要用while把缓冲区的回车去掉

如果觉得有帮助并且看懂了的话请设个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-3-8 22:55:02 | 显示全部楼层
洋洋痒 发表于 2021-3-7 10:07
1 c没必要弄成数组你要是非得弄成数组下边的c是不能单独用的,要写成c[x]的格式
2getchar()输入的数字是字 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 19:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表