0
点赞
收藏
分享

微信扫一扫

1050. 字符排序(EOJ程序设计能力实训)

安七月读书 2022-02-26 阅读 18

题目描述:

1050. 字符排序 - 程序设计能力实训 - ECNU Online Judgeicon-default.png?t=M1L8https://acm.ecnu.edu.cn/contest/43/problem/1050/【题目难度:Medium】 

提示:开两个数组,一个存读入的字符串(s),一个存这个字符串中的字母(letter),再将lettter排序后,放回s中原本是字母的地方。

AC代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;

int main(){
	int T;
	cin>>T;
	getchar();//把换行符读掉 
	char s[249];
	char letter[249];
	int n,nLetter;
	char ch;
	
	for(int t=0;t<T;t++){	
		nLetter=0;//记得初始化 
		//读入数据
		cin.getline(s,249);
		//将字符串中的字母存进另一个数组letter 
		n=strlen(s);
		for(int i=0;i<n;i++){
			if(s[i]>='A' && s[i]<='Z'){
				letter[nLetter]=s[i];
				nLetter++; 
			}
		}
		//给存字母的数组排序 
		sort(letter,letter+nLetter);
		//排好序后放回去
		int k=0;
		for(int i=0;i<n;i++){
			if(s[i]>='A' && s[i]<='Z'){
				s[i]=letter[k];
				k++;
			}
		} 
		//输出
		printf("case #%d:\n",t);
		for(int i=0;i<n;i++){
			cout<<s[i];
		} 
		cout<<endl;
	}
} 

举报

相关推荐

0 条评论