题目描述
原题链接点我
题解与代码
将输入的数字串每个数字求个累加和,然后将累加和的每个数字以英文单词的形式输出。
涉及知识点:字符-48为数字 和 sprintf 这两个是我用到的主要知识点,也可能有别的做法不用sprintf。
AC代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <iostream> #include <cstring> using namespace std; int sum; int calcForSum(char *s){ int slen=strlen(s); for(int i=0;i<slen;i++){ sum+=*(s+i)-48; } return sum; } void output(char *arr){ int len=strlen(arr); for(int i=0;i<len;i++){ if(i>0){ cout<<" "; } switch(*(arr+i)-48){ case 0:cout<<"zero";continue; case 1:cout<<"one";continue; case 2:cout<<"two";continue; case 3:cout<<"three";continue; case 4:cout<<"four";continue; case 5:cout<<"five";continue; case 6:cout<<"six";continue; case 7:cout<<"seven";continue; case 8:cout<<"eight";continue; case 9:cout<<"nine";continue; } } } int main(){ char inStr[105]; scanf("%s",inStr); calcForSum(inStr); char arr[100]; sprintf(arr,"%d",sum); output(arr); return 0; }
|