前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些年我们一起忘掉的C (八).字符统计排序

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

作者头像
franket
发布2021-10-18 10:52:04
3370
发布2021-10-18 10:52:04
举报
文章被收录于专栏:技术杂记

前言

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


概要


字符统计并按序输出

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

代码注解

代码语言: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 != '\0';p++) //遍历c数组中字符串的每个字符,字符串在字符数组中是以'\0'结尾的,所以读到了'\0',就代表读完了所有字符串
	{
		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='\0';
	*lp='\0';
	*np='\0';
	*op='\0';   //将各个字符序列后面加一个'\0',以示字符串的终结
	
	printf(" total upcase is :%d\n total lowcase is :%d\n total number is :%d\n total othercase is :%d\n",upcase,lowcase,num,othercase); //分别输出计数值
	printf("the last string is %s%s%s%s\n",upc,lowc,numc,oc);   //按照大写字符,小写字符,数字字符,其它字符的顺序进行输出
	return 0;
}

思路

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

基础知识点

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

原文地址

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概要
    • 字符统计并按序输出
      • 代码注解
      • 思路
      • 基础知识点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档