7-13 实验2_7_统计字符 (100 分)

给定一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

输入格式:

只有一行,为一个字符序列,字符序列长度小于100,以回车键结束。

输出格式:

只有一行,为4个用空格分隔的整数,依次代表输入字符序列中英文字符,空格,数字以及其他字符的数量。

输入样例:

Happy new year #100101 !

输出样例:

12 4 6 2

代码如下:

#include<stdio.h>
int main()
{
	char a;
	int s1=0, s2=0, s3=0, s4 = 0;
	scanf("%c", &a);
	while (a != '\n')
	{
		if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')
			s1++;
		else if (a == ' ')
			s2++;
		else if (a >= '0' && a <= '10')
			s3++;
		else
			s4++;
		scanf("%c", &a);
	}
	printf("%d %d %d %d", s1, s2, s3, s4);
	return 0;

}

 

在这里大家可能会取找ASCLL码表来找到字母和数字对应的ASCLL码值,但是也可以直接用字符来代替!!!

如果对字符数组有了解,该问题也可以用数组解决

下面是用数组写出的代码:


#include<stdio.h>
int main()
{
    int i = 0;
    int s1 = 0, s2 = 0, s3 = 0, s4 = 0;
    char a[100] = { 0 };//一个字符数组
    gets(a);//输入,字符串
    while (a[i] != '\0')
    {
        if (a[i] >= 'a' && a[i] <= 'z' || a[i] >= 'A' && a[i] <= 'Z')
            	s1++;
        else if (a[i] == ' ')
            	s2++;
        else if (a[i] >= '0' && a[i] <= '10')
            	s3++;
        else
                s4++;
        i++;
    }
    printf("%d %d %d %d", s1, s2, s3, s4);
    return 0;
}

这里为大家简单介绍一下gets函数 

gets ()函数用来从标准输入设备(键盘)读取 字符 串直到换行符结束,但换行符会被丢弃,然后在末尾添加'0'字符。.

gets函数的原型:

char * gets ( char * str );

在下一篇博客会进一步介绍gets函数以及gets函数与scanf函数的区别等等

这道题如果对指针有基本了解,也可以用指针来解决

用指针写出的代码:


#include<stdio.h>
int main()
{
    int s1 = 0, s2 = 0, s3 = 0, s4 = 0;
    char a[100] = { 0 };
    gets(a);
    char* i = a;//此处即指针
    while (*i != '\0')//*i即解引用,就是相当于a[i]
    {
        if (*i >= 'a' && *i <= 'z' || *i >= 'A' && *i <= 'Z')
            	s1++;
        else if (*i == ' ')
            	s2++;
        else if (*i >= '0' && *i <= '10')
            	s3++;
        else
                s4++;
        i++;
    }
    printf("%d %d %d %d", s1, s2, s3, s4);
    return 0;
}

建议收藏 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值