其他分享
首页 > 其他分享> > L1-007 念数字 (10 分)

L1-007 念数字 (10 分)

作者:互联网

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

输入格式:

输入在一行中给出一个整数,如:1234
提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si

输入样例

-600

输出样例

fu liu ling ling

答案

第一次

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
	int num;
	cin>>num;
	if(num!=abs(num))
		cout<<"fu"<<" ";
	num=abs(num);
	int length=(int)log10(num)+1;
	string figure[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	string answer[length];
	int i=length-1;
	while(num>=10)
	{
		int trail=num%10;
		answer[i]=figure[trail];
		num=num/10;
		i--;
	}
	cout<<figure[num];
	for(int k=0;k<length;k++)
	{
		cout<<" "<<answer[k];
	}
	
	return 0;
}

不知道为什么总是会多一个空格

第二次

参考

https://blog.csdn.net/mizifor666/article/details/107170591

#include <iostream>
using namespace std;

int main()
{
    string s[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//存放0-9的拼音
    string num;//存放录入的数
    cin>>num;
    /*负数时*/
    if(num[0]=='-')
    {
        cout<<"fu";//先输出‘-’
        for(int i=1;i<num.length();i++)
        {
            cout<<' '<<s[num[i]-'0'];//注意此处将数字字符转化为对应数字
        }
    }
    /*非负数时*/
    else
    {
        cout<<s[num[0]-'0'];//先输出第一个数字
        for(int i=1;i<num.length();i++)
        {
            cout<<' '<<s[num[i]-'0'];//注意此处将数字字符转化为对应数字
        }
    }
    return 0;
}


在这里插入图片描述

标签:10,cout,int,num,007,L1,ling,拼音
来源: https://blog.csdn.net/qq_45704263/article/details/121598026