L1-007 念数字 (10 point(s))

  • 求基除余法可能会多写一个函数,所以直接读取字符的方法比较好。

    如果是读取字符串的话,需要消去开头的负号再遍历,不然会有问题。

  • 如果不用字符串的方式也可以用读取字符的方法。这样不需要对字符串遍历,更简便。

    参考代码

#include <bits/stdc++.h>
using namespace std;

int main(){
	int first = 0;
	char c;
	string Ping[10]{"ling", "yi", "er", "san", "si",
						"wu", "liu", "qi", "ba", "jiu"};
	
	while(cin >> c){
		// 如果数字为负数 输出fu 并令first++ 令后面开始打印空格 
		if(c == '-'){
			cout << "fu";
			first++;
		}
		else cout << (first++ ? " " : "") << Ping[c - '0'];
	}
} 
#include <bits/stdc++.h>
using namespace std;

int main(){
	int first = 0;
	string str, Ping[10]{"ling", "yi", "er", "san", "si",
						"wu", "liu", "qi", "ba", "jiu"};
	cin >> str;
	
	// 如果数字为负数 输出fu 并令first++ 令后面开始打印空格 
	if(stoi(str) < 0){
		cout << "fu";
		first++;
		// 消去负号
		str = to_string(abs(stoi(str))); 
	}
	
	// 遍历字符串将字符转换为数字输出
	for(auto s: str)
		cout << (first++ ? " " : "") << Ping[s - '0'];
} 

posted on 2021-09-29 13:50  Atl212  阅读(82)  评论(0)    收藏  举报

导航