PTA 7-21 统计字符个数

本题目要求统计一串字符中英文字符(‘a’-‘z’,‘A’-‘Z’)的个数、数字字符(‘0’-‘9’)的个数和其他字符的个数。

小贴士:这里需要用循环一个一个的输入单字符,然后每个字符做判断,统计个数。可以用scanf(“%c”,&a);也可以用a=getchar().约定循环判断条件是a!=’&”。注意每次循环都是一个新的a,输入新值。不要一直用的都是第一个a的值做循环判断,那就是死循环了。

算法思想提示:相当于有一串人要通过一个闸机,统计不同颜色衣服的人数,为红色,黄色,绿色。统计计红色衣服的人数,黄色衣服的人数和绿色衣服的人数,约定最后一个人的衣服一定是黑色,后面的就不再通过闸机了。

因此,第一个人过来先判断他是不是黑色衣服。

如果不是黑色开始进入循环体。

判断他是三者颜色中的哪一种,然后对应的颜色计数加一,然后再来一个人过闸机,再判断它是不是黑色,反复循环。要点就是:注意每次要来一个人过闸机,那别老是第一个人循环过闸机判断,如果第一个人不是黑色衣服,就是死循环了,一定要每次循环,来一个新人(新数据),怎么来?用getchar或者scanf接收。

输入格式:

输入一串字符,以回车'&'结束。

输出格式:

letter=英文字符的个数,digital=数字字符的个数,others=其他字符的个数。

输入样例:

I am 26.&

输出样例:

'&'是结束符,&及其后面的字符都不计算在内,注意空格也是字符

letter=3,digital=2,others=3
#include<stdio.h>
int main()
{
    int letter = 0,digital = 0,others = 0;
    char zf[1000];
    gets(zf);
    int i=0;
    while(zf[i] !='&')
    {
        if(zf[i] >='0' && zf[i] <='9')
            digital++;
        else if(zf[i] >='a' && zf[i] <='z')
            letter++;
        else if(zf[i] >='A' && zf[i] <='Z')
            letter++;
        else
            others++;
        i++;
    }
    printf("letter=%d,digital=%d,others=%d",letter,digital,others);
    return 0;

    
}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值