多重分支的选择语句,可以用来进行统计,字符指针可以灵活地操作字符串
输入一行字符串,找出其中大写字母、小写字母、数字以及其他字符的个数,然后将找出的结果按照大写字母、小写字母、数字以及其他字符的次序排列成一个新的字符串
#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 删除。