• 字符串题单


    第一题(小写字母转大写字母输出):

    2020.8.15
    水题一道
    输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。

    #include <bits/stdc++.h>
    
    using namespace std;
    
    
    int main()
    {
    	
    	string aa;
    	cin >> aa;
    	for (int i = 0; i < aa.size(); i++)
    	{
    		aa[i] = toupper(aa[i]);//toupper()是将小写字母转换为大写字母
    	}
    	cout << aa;
    	
    }
    

    第二题(数值转换)

    2020.8.15
    题目:给定一个数,请将该数各个位上数字反转得到一个新数。

    这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分;分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母;百分数的分子一定是整数,百分数只改变数字部分。整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零;小数新数的末尾不为0(除非小数部分除了0没有别的数,那么只保留1个0);分数不约分,分子和分母都不是小数(约分滴童鞋抱歉了,不能过哦。输入数据保证分母不为0),本次没有负数。

    输入输出例子:
    输入:8.0300600 输出:8.6003
    输入:5087462 输出:2647805
    输入:700/27 输出:7/72
    输入:8670% 输出:768%
    输入:8.0 输出:8.0

    #include <iostream>
    #include <cmath>
    #include <cstdio>
    #include <string>
    #include <algorithm>
    
    
    using namespace std;
    
    //A.
    //将小写字母转换为大写字母
    //int main()
    //{
    //	
    //	string aa;
    //	cin >> aa;
    //	for (int i = 0; i < aa.size(); i++)
    //	{
    //		aa[i] = toupper(aa[i]);
    //	}
    //	cout << aa;
    //	
    //}
    
    
    //B.
    //此题是关于反转问题,涉及正整数,小数,百分数,分数;对于不同类型的数反转方法不同;在这四种类型的数值中只有小数会涉及后导零;
    //正整数:直接用stl中的reverse函数进行反转,但下列代码是自写一个反转函数,因为可能存在反转后前面第一位是0,所以需要删除掉;
    //分数:根据题目要求,是对分号两侧的数字分别进行反转,遍历字符串,找到分号所在的位置,分子则提取开始下标到分号区间的数值进行反转,分母从分号+1后的开始提取子字符串;
    //关于提取子字符串需要用到stl中的substr函数;
    //小数:小数会涉及到后导零的情况,所以需要再写一个函数进行操作,其余与分数的操作相同;
    string reverse0(string ss)//自函数
    {
    	int ans = 0;
    	reverse(ss.begin(), ss.end());//函数反转
    	for (char i : ss)
    	{
    		if (i == '0')++ans;
    		else break;
    	}
    	ss.erase(ss.begin(), ss.begin() + ans);//进行之间删0
    	return (ss != "" ? ss : "0");//空字符串
    }
    
    string tail0(string ss)
    {
    	int ans = 0;
    	for (int i = ss.length() - 1; i >= 0; --i)
    	{
    		if (ss[i] == '0')
    			++ans;
    		else break;
    	}
    	ss.erase(ss.end()-ans, ss.end());//删除后面滴0
    	return (ss!=""?ss:"0");
    }
    //题意是反转数字,可以是百分数,小数,分数,正整数
    int main()
    {
    	string ss;
    	getline(cin, ss);
    
    	//分数的反转,用分号分成左右两边,各自反转,最后一并输出;
    //先遍历字符串,寻找分号所在的下标位置
    	for (char i : ss)
    		//写这部分自己太憨憨了,开始不想调用自函数,想直接用stl中的函数,后面发现一个类型数需要操作前后删0操作,这样for这一部分具有相同的操作,用自函数更省事
    		//其中还涉及到另一个函数find(),从前往后找到所想找的子串或者字符出现的位置
    	{
    		if (i == '/')
    		{
    			string left, right;
    			left = ss.substr(0, ss.find("/"));
    			right = ss.substr(ss.find("/") + 1);
    			cout << reverse0(left) << "/" << reverse0(right) << endl;
    			return 0;
    		}
    		if (i == '.')//反转小数
    		{
    			string left, right;
    			left = ss.substr(0, ss.find("."));
    			right = ss.substr(ss.find(".") + 1);
    			cout << reverse0(left) << "." << tail0(reverse0(right)) << endl;//注意小数需要考虑前后0!!!!
    			return 0;
    		}
    	}
    
    	//如果是百分数,先按正整数反转,再将百分号输出,其中涉及到提取子字符串的方法,substr();
    	if (ss.back() == '%')
    	{
    		
    		cout << reverse0(ss.substr(0, ss.size() - 1)) << "%" << endl;//提取子字符串进行反转
    		return 0;
    	}
    	
    	cout <<reverse0(ss) << endl;
    	return 0;
    }

    作者:Better又
    出处:https://www.cnblogs.com/lwyy1223-/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    使用keytool转换签名证书格式,keyStore、jks签名证书相互转换
    Mybatis中jdbcType和javaType的对应关系
    springboot通过已有的server.key,crt,ca证书生成jks文件并开启HTTPS 并启动双向认证+动态加载信任库
    uniapp 生成Android证书及.keystore转.jks、.pem
    查看mysql数据库及表编码格式
    springboot连接mysql报错errorCode 0, state 08S01
    redis注册成windows服务步骤
    lt is detected that the motherboard VT is not enabled, and the games may lag or crash.
    Python %字符串格式化 (%操作符)
    Maven安装教程
  • 原文地址:https://www.cnblogs.com/lwyy1223-/p/13508686.html
Copyright © 2020-2023  润新知