1002 写出这个数 C++

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100^。

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

看到题目 想到是从高位往低位判断输出的 所以想到 % + 栈 + switch来实现


#include <bits/stdc++.h>

using namespace std;

char a[90000+10];
stack<int>ST;

void solve(){
  for (int i = 0;; ) {
		char c;
		c = getchar();
		if (c == '\n') {
			a[i] = 0;
			break;
		}
		a[i++] = c;
	}
	int sum = 0;
	
	for(int i=0;i<strlen(a);i++){
	  sum+=a[i]-'0';
	}
	while(sum){
	  ST.push(sum%10);
	  sum/=10;
	}
	
	for(;ST.size();ST.pop()){
	  switch(ST.top()){
	    case 0:{cout<<"ling";break;};
	    case 1:{cout<<"yi";break;};
	    case 2:{cout<<"er";break;};
	    case 3:{cout<<"san";break;};
	    case 4:{cout<<"si";break;};
	    case 5:{cout<<"wu";break;};
	    case 6:{cout<<"liu";break;};
	    case 7:{cout<<"qi";break;};
	    case 8:{cout<<"ba";break;};
	    case 9:{cout<<"jiu";break;};
	    
	  }if(ST.size()!=1)
	      cout<<" ";
	}
  
}

int main(){
  
  solve();
  return 0;
}

猜你喜欢

转载自blog.csdn.net/oshuaifeng/article/details/80365186