2006-09-25 20:40
对啊,中文的”零”很难处理的,多一位数要处理程序不只多一行,
如果到6位数还好,第4楼有再修正过,再上了限制最大值的功能,
不然超过6个就会误判,但程序还是Dev-C++的,因为VC++
6不会用= =
2006-09-25 20:50
2006-09-26 14:02
嗯,这个方法试过了,但是到 ”千万” 会很难,
“零”的组合会非常多,10000003….1000013…
1000103….1001003…..好多…”亿”以上就不敢领教了,
我想可能有更好的方法….
构想是整个转换成中文字后,再比对字符串方式,
过滤掉”零零”…”零万”…”零千”…”零百”..这类的…
但是才学没多久,不知哪些语法可以这么用…
输出一个过滤一个的方式,位数太大的话,不是一个好方法…
2006-09-26 16:50
[此贴子已经被作者于2006-9-27 5:36:22编辑过]
2006-09-26 20:27
[此贴子已经被作者于2006-9-27 5:34:25编辑过]
2006-09-26 20:32
2006-10-10 20:29
2006-10-10 20:39
2006-10-11 14:10
#include <iostream>
using namespace std;
void f(int n,int a[],int &i)
{
if(n < 10)
{
a[i++] = n;
return ;
}
f(n/10,a,i);
a[i++] = n%10;
}
void f1(int i)//这里也可以用map容器
{
switch(i)
{
case 0:
cout<<"零";
break;
case 1:
cout<<"一";
break;
case 2:
cout<<"二";
break;
case 3:
cout<<"三";
break;
case 4:
cout<<"四";
break;
case 5:
cout<<"五";
break;
case 6:
cout<<"六";
break;
case 7:
cout<<"七";
break;
case 8:
cout<<"八";
break;
case 9:
cout<<"九";
break;
default:
break;
}
}
void f2(int i)//也可以用容器来做
{
switch(i)
{
case 2:
case 6:
cout<<"十";
break;
case 3:
case 7:
cout<<"百";
break;
case 4:
case 8:
cout<<"千";
break;
case 5:
cout<<"万";
break;
case 9:
cout<<"亿";
break;
default:
break;
}
}
int main()
{
int a[50],n =0;
unsigned long m;
cin>>m;
f(m,a,n);
for(int j = 0;j < n;j++)
{
f1(a[j]);
f2(n-j);
}
cout<<endl;
return 0;
}
范围是1到9999万
[此贴子已经被作者于2006-10-13 17:50:50编辑过]

2006-10-11 18:04