那些年我们一起忘掉的C (八).字符统计排序

2021-10-18 10:52:04 浏览数 (1)

前言

多重分支的选择语句,可以用来进行统计,字符指针可以灵活地操作字符串


概要


字符统计并按序输出

输入一行字符串,找出其中大写字母、小写字母、数字以及其他字符的个数,然后将找出的结果按照大写字母、小写字母、数字以及其他字符的次序排列成一个新的字符串

代码注解

代码语言:javascript复制
#include <stdio.h>
#define LENGTH 40

main()
{
	int upcase=0,lowcase=0,num=0,othercase=0; //定义4个变量用来存储字符统计的累计和
	char c[LENGTH],*p,upc[LENGTH],*up,lowc[LENGTH],*lp,numc[LENGTH],*np,oc[LENGTH],*op; //定义5个字符数组分别用来存储输入字符串、大写字符串、小写字符串、数字字符串、其它字符串共5种字符串,然后定义5个字符指针
	up=upc;
	lp=lowc;
	np=numc;
	op=oc; //将指针分别指向各种字符串数组
	printf("please input a string (less then %d chars):n",LENGTH);
	scanf("%s",c); //将输入字符串存储到数组c
	for(p=c;*p != '';p  ) //遍历c数组中字符串的每个字符,字符串在字符数组中是以''结尾的,所以读到了'',就代表读完了所有字符串
	{
		if ( *p >= 'A' && *p <= 'Z')
			{
				upcase  ; //如果为大写,就将大写计数器加1
				*up=*p;   //将字符保存到up指针指向的位置,即upc字符数组中
				up  ;	  //将up指针往后移动一个单元
			}      
		else if(*p >= 'a' && *p <= 'z') 
			{
				lowcase  ;
				*lp=*p;
				lp  ;     //统计小写字符的个数,并且保存到数组中
			}
		else if(*p >= '0' && *p <= '9')
			{
				num  ;
				*np=*p;
				np  ;    //统计数字字符的个数,并且保存到数组中
			}
		else 
			{
				othercase   ;
				*op=*p;
				op  ;    //统计数字字符的个数,并且保存到数组中
			}
	}
	*up='';
	*lp='';
	*np='';
	*op='';   //将各个字符序列后面加一个'',以示字符串的终结
	
	printf(" total upcase is :%dn total lowcase is :%dn total number is :%dn total othercase is :%dn",upcase,lowcase,num,othercase); //分别输出计数值
	printf("the last string is %s%s%s%sn",upc,lowc,numc,oc);   //按照大写字符,小写字符,数字字符,其它字符的顺序进行输出
	return 0;
}

思路

将输入字符串进行保存,然后遍历,逐个判断累计与累积

基础知识点

  • 数组的定义
  • 指针的用法
  • 输入输出函数的用法
  • 多重分支的选择

原文地址

0 人点赞