有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面

本文介绍了一种在C语言环境下,高效地将字符串中的小写字母排在大写字母前面的方法,通过设置两个指针分别从前向后遍历,确保排序后的字符串满足条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法。

c语言函数原型void proc(char *str),也可以采用你自己熟悉的语言。

#include<iostream.h>
/*
	设置两个变量i和j分别从字符串开始和结尾处开始查找,i查找到大写字母停止,j查找到小写字母停止
	然后判断i是否小于j,如果是的话就交换在i位置和j位置的字母
	交换的时候继续判断i和j的值是为了防止在while是判断后  fG这种情况,i判断f位置小写,i加1,
	j判断G位置大写,j减1,这样再交换就错误了
*/

void proc(char *str)
{
	int num=0;
	while(*(str+num)!='\0')
		num++;
	int i=0,j=num-1;
	while(i<j)
	{
		while(*(str+i)>='a'&&*(str+i)<='z')
			i++;
		while(*(str+j)>='A'&&*(str+j)<='Z')
			j--;
		if(i<j)
		{
			char tmp;
			tmp=*(str+i);
			*(str+i)=*(str+j);
			*(str+j)=tmp;
		}
	}

	cout<<str<<endl;
}

void  main()
{
	char str[]="aBdfAsgOqwC";
	proc(str);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值