输入字符串,统计英文字符、大写小写字母,数字字符,空格和其他字符

《程序设计基础实训指导教程-c语言》
ISBN 978-7-03-032846-5
p74
4.1.2 上级实训内容

【实训内容7】输入一字符串,分别统计该字符串中英文字母、数字字符和其他字符出现的个数

for循环使用循环变量调用字符数组

#include<stdio.h>
#include<string.h>
#define MAX 999
int main(void)
{
	char str[MAX];
	int a=0,b=0,c=0,i;
	puts("输入字符串:");
	gets(str);
	puts("输入的字符串为:");
	puts(str);
	for(i=0;i<MAX;i++)
	{
		if(str[i]>='0'&&str[i]<='9')
		{
			a++;
		}
		else if(str[i]>='a'&&str[i]<='z')
		{
			b++;
		}
		else if(str[i]>='A'&&str[i]<='Z')
		{
			b++;
		}
		else if(str[i]=='\0') break;	//当遇到数组结束标识符是结束循环,避免循环到MAX 
		else
		{
			if(str[i]==' ') continue;	//空格不算其他字符 
			else c++;
		} 
	}
	printf("英文字母有%d个\n数字字符有%d个\n其他字符有%d个",b,a,c);
}

在这里插入图片描述
【程序更新】2020/4/26

修改:字符数组调用方式,使用指针指向字符串
《程序设计基础-c语言》杨莉 刘鸿翔  
ISBN-978-7-03-032903-5  
p137
习题5

1.接受用户输入的一行字符,以按Enter建结束,分别统计其中的大写字母、小写字母、空格、数字和其他字符的个数

for循环使用指针调用字符数组

#include<stdio.h>
#include<string.h>
#define MAX 999
int main(void)
{
	char str[MAX],*string;
	int shu=0,english=0,t=0,xiao=0,da=0,null=0;
	puts("输入字符串:");
	gets(str);
	string=str;	//字符数组首地址赋给字符指针变量string 
	puts("输入的字符串为:");
	printf("%s",string);
	for( ; *string!='\0';string++)
	{
		if(*string>='0'&&*string<='9')
		{
			shu++;
		}
		else if(*string>='a'&&*string<='z')
		{
			english++;
			xiao++;
		}
		else if(*string>='A'&&*string<='Z')
		{
			english++;
			da++;
		}
		else if(*string=='\0') break;	//当遇到数组结束标识符是结束循环,避免循环到MAX 
		else
		{
			if(*string==' ')	//空格不算其他字符
			{
				null++;
			} 
			else t++;
		}
	}
	printf("\n英文字母有%d个\n\t其中大写字母有%d个,小写字母有%d个\n数字字符有%d个\n空格有%d个\n其他字符有%d个",english,da,xiao,shu,null,t);
}

在这里插入图片描述
【程序更新】2020/5/2

修改:	(1)加入字符串函数判断字母,数字,英文字符
		(2)统计变量传入数组,使用指针引用
#include <stdio.h>
#include <string.h>
#define MAX 99
int main(void){
	char str[MAX];
	int i,sum[5]={0};
	puts("输入字符串:\n");
	gets(str);
	for(i=0;str[i]!='\0';i++){
		if(isalpha(str[i])!=0){
			if(isupper(str[i])!=0){
				sum[0]++;
			}
			else if(islower(str[i])!=0){
				sum[1]++;
			}
		}
		else if(isdigit(str[i])!=0){
			sum[2]++;
		}
		else if(str[i]==' '){
			sum[3]++;
		}
		else{
			sum[4]++;
		}
	}
		printf("大写字母:%d\n小写字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",*(sum+0),*(sum+1),*(sum+2),*(sum+3),*(sum+4));
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

折腾的小飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值