zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practice (中文)1002 写出这个数 (20分)

    1.题目链接

    https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384

    2.题目分析

    大体思路就是将各位数字相加,将和取余求出每一位的数,再将对应的中文字符串存入数组,最后输出

    3.代码

    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int main()
    {
    	string number;
    	cin >> number;
    	string list[101];
    	int amount = 0;
    	for (int i = 0; i < number.length(); i++)
    	{
    		amount += (number[i] - 48);
    	}
    	int copy = amount;
    	int a = 10;
    	int b = 1;
    	int c = 0;
    	while (amount)
    	{
    		int temp = amount % (int)pow(a, b);
    		switch (temp)
    		{
    		case 0:list[c++] = "ling"; break;
    		case 1:list[c++] = "yi"; break;
    		case 2:list[c++] = "er"; break;
    		case 3:list[c++] = "san"; break;
    		case 4:list[c++] = "si"; break;
    		case 5:list[c++] = "wu"; break;
    		case 6:list[c++] = "liu"; break;
    		case 7:list[c++] = "qi"; break;
    		case 8:list[c++] = "ba"; break;
    		case 9:list[c++] = "jiu"; break;
    		}
    		amount /= 10;
    	}
    	for (int i = c - 1; i >0; i--)
    	{
    		cout << list[i] << " ";
    	}
    	cout << list[0];
    
    }

    4.改进

    之所以要将字符串先存入数组是因为不知道amount的位数是多少,无法从前向后求余

    于是就将得出的amount先转换为字符串

    5.代码

    #include<iostream>
    #include<sstream>
    #include<cstring>
    #include<string>
    #include<cmath>
    using namespace std;
    int main()
    {
    	string number;
    	cin >> number;
    	string list[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    	int amount = 0;
    	for (int i = 0; i < number.length(); i++)
    	{
    		amount += (number[i] - 48);
    	}
    	string transamount;
    	stringstream ss;
    	ss << amount;
    	ss >> transamount;
    	int i = 0;
    	for (; i < transamount.length()-1; i++)
    	{
    		cout << list[transamount[i] - '0']<<' ';
    	}
    	cout << list[transamount[i] - '0'];
    
    }

    6.附上string与int相互转换的方法

    使用stringstream

    (参考https://www.cnblogs.com/houchen/p/8984164.html

    1.数字转换为字符串

    #include <string>
    
      #include <sstream>
    
      int main(){
        double a = 123.32;
        string res;
        stringstream ss;          定义流ss
        ss << a;                       将数字a转化成流ss
        ss >> res;                    将流ss转化成字符串
        return 0;
      }

    2.字符串转换为数字

    #include <string>
    
      #include <sstream>
    
      int main(){
        double a ;
        string res= "123.32";
        stringstream ss;  
        ss << res;                  
        ss >> a;
        return 0;
      }

    int 转string使用to_string函数

    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
    	int n = 100;
    	string ss = to_string(n);
    	cout << ss;
    }

    如果是小数转换为字符串的话使用该方法会自动添加许多0

    sprintf函数、sscanf函数

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	char str[10];
    	int a = 1234321;
    	//将整数转化为字符串
    	sprintf(str, "%d", a);
    	cout << str;
        char str1[10];
    
    
    	double b = 123.321;
    	//将浮点数转化为字符串
    		sprintf(str1, "%.3lf", b);
    	cout << str1;
    }
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        char str[]="1234321";
        int a;
        sscanf(str,"%d",&a);//注意这里的&
        cout<<a<<endl;
    
        char str1[]="123.321";
        double b;
        sscanf(str1,"%lf",&b);
        cout<<b<<endl;
        return 0;
    }
  • 相关阅读:
    简单查询plan
    EXP AND IMP
    (4.16)sql server迁移DB文件(同一DB内)
    sql server日志传送实践(基于server 2008 R2)
    (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构、SQL查询流程)
    (1.2)学习笔记之mysql体系结构(数据库文件)
    (1.1)学习笔记之mysql体系结构(内存、进程、线程)
    SSAS(SQL Server 分析服务)、***S(SQL Server报表服务)、SSIS(SQL Server集成服务)
    教你使用SQL查询(1-12)
    Sql Server内置函数实现MD5加密
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12789033.html
Copyright © 2011-2022 走看看