[ 编程题 ]

实现如下函数:
void printInChinese(int num);
这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法。
例如:
17 -> 一十七
120 -> 一百二十
201 -> 二百零一
1074 -> 一千零七十四
65536 -> 六万五千五百三十六
1010101 -> 一百零一万零一百零一
提示:请注意‘零’的处理。
扩展:如果需要处理通用简化习惯,你将怎么处理,例如:
17 -> 十七
120 -> 一百二
void printInChinese(int num)
{
char* wei[]={“”,”十”,”百”,”千”,”万”,”十”,”百”,”千”};
char* num1[]={“零”,”一”,”二”,”三”,”四”,”五”,”六”,”七”,”八”,”九”}; int a[9];
int i=0;
int tmp,flag=0;
while(num)
{
a[i]=num%10;
num/=10;
i++;
}
for(int j=i-1;j>=0;j--)
{
if(a[j]==0)
if(flag==0)
{
flag=1;
tmp=j;
}
else
{
if(flag==1)
{
if(tmp-j>=4) //中间零数超过四位
printf(“万”);
printf(“零”);
flag=0;
tmp=0;
}
printf(“%s%s” ,num1*a*j++, wei*j+);
}
}
}
//对于特殊情况的考虑 需要考虑在十位和十万位开头 且为1的情况。
末尾的情况稍微复杂点 可以考虑先将所有要输出的数据缓存,然后根据末尾0的情况适当输出。
已知完全弹性碰撞公式如下:
其中m1 m2为小球质量,v1 v2为原始速度,v1' v2'是碰撞后的速度。
struct ball_t {
double m; // 质量
double v; // 速度,速度为正表示球体往x轴正方向运动
double pos; // 在x坐标轴的位置
};
请实现以下函数:
void progress(ball_t & b1, ball_t & b2, double leftWall, double rightWall, double t);
这个函数输入两个球的当前状况(包括质量,速度,在x轴的位置),以及左右墙壁的位置,输出两个球在t秒钟后的状况(包括质量,速度,在x轴的位置)。
特殊说明:球体碰撞墙面也是完全弹性碰撞,即球体速度变为原本的负数。