题目:输出GPLT(c++常用函数、transform、find)

transform用法:
//将字母全部转为大写/小写

void f7(){
    string s1="AAAbbb";
    transform(s1.begin(),s1.end(),s1.begin(),toupper);
    cout<<"全部转化为大写:"<<s1<<endl;
    transform(s1.begin(),s1.end(),s1.begin(),tolower);
    cout<<"全部转化为小写:"<<s1<<endl;
}
//是则返回非0整数,不是则返回0
int isalpha( int c );
//判断输入的字符是否为字母,即是否在 “A – Z” 或者 "a – z"之间
int isalnum( int c );
//判断输入的字符是否为字母或数字,即是否在 “A – Z” 或者 "a – z"或者"0-9"之间
int islower( int c );
//判断输入的字符是否为小写字母
int isupper( int c );
//判断输入的字符是否为大写字母
int isdigit( int c );
//判断输入的字符是否为数字
int isblank( int c );
//判断输入字符是否为空格 ' '(即space)或tab键制表符'\t'
int isspace( int c );
//判断输入字符是否为空格 ' ',tab键制表符'\t'、回车'\r' 、换行'\n'、换页'\f'和垂直制表符'\v' 等

函数:
(1)int abs(int i) //返回整型参数i的绝对值
(2)double fabs(double x) //返回双精度参数x的绝对值
(3)long labs(long n) //返回长整型参数n的绝对值
(4)double exp(double x) //返回指数函数e^x的值
(5)double pow(double x,double y) //返回x^y的值
(6)double log(double x) //返回logex的值
(7)double log10(double x) //返回log10x的值
(8)double sqrt(double x) //返回根号x的值
(9)int ceil(double x) //返回不小于x的最小整数
(10)max(a, b) //返回较大的数字
(11)min(a, b) //返回较小的数字
(12)double fmod(double x, double y) 返回 x 除以 y 的余数 %只能用于整数
(13)double floor(double x)返回小于或等于x的最大的整数值

Find
1、algorithm中的函数
其调用形式为find(start,end,value)
start搜寻的起点,end搜寻的终点,要寻找的value值

容器的表示方法
find(a.begin(),a.end(),value)
a.end()不在查找范围内

数组的表示方法
find(a,a+length,val)

2、如果元素不在
对于返回迭代器的查找,通过判断 find(a.begin(),a.end(),value)==a.end(),来判断元素是否存在
对于string,通过 a.find(val)==string::npos 判定(常量npos定义的值为-1. 但又因为npos 的类型size_t是无符号整数类型,所以npos实际上是一个正数,并且是size_t类型的最大值,意思就是只能写npos判定)

题目:输出GPLT
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	cin>>s;
	transform(s.begin(),s.end(),s.begin(),::toupper);
	int cnt[300];
	memset(cnt,0,sizeof(cnt));
	for(int i=0;i<s.length();i++)
	{
		cnt[s[i]]++;
	}
	while(cnt['G']||cnt['P']||cnt['L']||cnt['T'])
	{
		if(cnt['G'])
		{
			cout<<"G";
			cnt['G']--;
		}
		if(cnt['P'])
		{
			cout<<"P";
			cnt['P']--;
		}
		if(cnt['L'])
		{
			cout<<"L";
			cnt['L']--;
		}
		if(cnt['T'])
		{
			cout<<"T";
			cnt['T']--;
		}
	}
	cout<<endl;
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值