原始代码,没有通过
#include <iostream>
#include<stdio.h>
#include<string>
using namespace std;
//递归函数
void Pr(int n)
{
int x;
//正序输出每一位数字
if (n <= 9)
x=n;
else
{
Pr(n/10);
x=n%10;
}
switch(x)
{
case 1:
printf("yi ");
break;
case 2:
printf("er ");
break;
case 3:
printf("san ");
break;
case 4:
printf("si ");
break;
case 5:
printf("wu ");
break;
case 6:
printf("liu ");
break;
case 7:
printf("qi ");
break;
case 8:
printf("ba ");
break;
case 9:
printf("jiu ");
break;
case 0:
printf("ling ");
break;
}
}
int main()
{
string a; //定义字符串a,便于输入题目要求的自然数n.
int sum=0; //sum表示每位数上相加的和
cin>>a;
int m=a.length(); //获取字符串的长度,调用length方法
for(int i=0;i<m;i++)
sum+=a[i]-48; //将字符类型转换为整型,并用数组接收每位数并求和
Pr(sum);
return 0;
}
其实自己写的代码都是东拼西凑的。虽说在自己的编译器运行没错,但是提交报的错是格式错误。如果有更好的建议,望留言,谢谢!
借鉴的代码
#include<stdio.h>
int main()
{
char n[100]; //定义一个数组,开空间方便大数输入
int j,i=0;
scanf("%s",&n); //字符串输入要用%d
for(;n[i]!='\0';i++) //数组声明之后开的空间如果没有被输入的数填满的话会默认为'\0',设置成这样就不会做无谓的循环啦
{
j+=(n[i]-'0'); //类型转换
}
//printf("%d",j); //这是我写的时候做的一个小测试,输出一下判断第一部分的计算有没有错,我直接copy题目里样例试的
char pin[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
if(j>99)
{
printf("%s ",pin[j/100]);
printf("%s ",pin[j%100/10]);
printf("%s",pin[j%100%10]);
}else if(j>9)
{
printf("%s ",pin[j/10]);
printf("%s",pin[j%10]);
}else{
printf("%s",pin[j]);
}
return 0;
}
链接: 借鉴的文章.