字符转化后排序

12 篇文章 0 订阅

转换排序

##xdoj
描述
输入一维字符数组str[N](N≤80),查找出其中小写字母并转换成大写字母,按下面方式排序:1、只对大写字母进行排序;2、其他字符原位保持不动;3、转换后的各大写字母由小到大排序。输出排序后的结果。

时间限制
1
内存限制
10000
类别
1

输入说明
输入一行字符数据str[N](N≤80)。

输出说明
格式输出:输出仅对转换后的大写字母排序结果,其他字符原位不动输出。

输入样例
xA3T7p

输出样例
AP3T7X

提示
注意转换方式和排序要求。
PS:看到此题,我的第一想法是先将语句中检索出小写,再将小写转化为大写
如下图所示

for(i=0;(c=str[i])!='\0';i++)
    	if(c>='a'&&c<='z') {str[i]=str[i]-32;}

再接着我们将其中的大写字母取出进行排序

if(str[i]>='A'&&str[i]<='Z'){xu[j]=str[i];j++;}

再对数组筛查把排序后的大写字母去替代之前的
详细代码如下

#include<stdio.h>
char xu[80];
int main()
{   int i,j=0;
	char str[80],c;
    gets(str);
    	for(i=0;(c=str[i])!='\0';i++)
    	{if(c>='a'&&c<='z') {str[i]=str[i]-32;}
		 if(str[i]>='A'&&str[i]<='Z'){xu[j]=str[i];j++;} 
        }
        if(j){line(j);}																					
        for(i=0,j=0;(c=str[i])!='\0';i++)
        {if(c>='A'&&c<='Z'){str[i]=xu[j];
		j++;
		}
		else continue;
		 }
		puts(str);
		return 0;
	}
 int line(int number)
 {int i,j;
 	char c;
  for(i=0;i<number-1;i++)
     for(j=0;j<number-i-1;j++)
     {if(xu[j]>xu[j+1])
     {c=xu[j+1];
     xu[j+1]=xu[j];
     xu[j]=c;
	 }
	 }
 return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值