我認為此題的測資太不謹慎了,
我的CODE如下(有BUG喔!)它竟然給我過了! :
#include <stdio.h>
#include <string.h>
#define MAX 150
char *unit[10]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖",} ;
char *table[3]={"仟","佰","拾"};
char *thr[4]={"萬","億","兆","京"};
void dis(char * s,int len)
{
int i,c=(len+3)/4,pos;
i=(4-len%4)%4;
do
{
for(;i<4;i++)
{
pos=len-c*4+i;
if(s[pos]!='0')
{
printf("%s",unit[s[pos]-48]);
if(i!=3)
printf("%s",table[i]);
}else{
if(pos<len-1&&s[pos+1]!='0'&&i!=3)
printf("%s",unit[0]);
}
}
if(c>1)
printf("%s",thr[c-2]);
i=0;
}while(--c);
return ;
}
int main()
{
char input[MAX];
while(gets(input)!=NULL)
{
dis(input,strlen(input));
puts("");
}
return 0;
}
有發現BUG嗎?
輸入100000000000000就知道了!
所以我認為測資要再加強一點!
我認為此題的測資太不謹慎了,
我的CODE如下(有BUG喔!)它竟然給我過了! :
#include
#include
#define MAX 150
char *unit[10]={"零","壹","貳","參","肆","伍","陸","柒","捌","玖",} ;
char *table[3]={"仟","佰","拾"};
char *thr[4]={"萬","億","兆","京"};
void dis(char * s,int len)
{
int i,c=(len+3)/4,pos;
i=(4-len%4)%4;
do
{
for(;i<4;i++)
{
pos=len-c*4+i;
if(s[pos]!='0')
{
printf("%s",unit[s[pos]-48]);
if(i!=3)
printf("%s",table[i]);
}else{
if(pos
printf("%s",unit[0]);
}
}
if(c>1)
printf("%s",thr[c-2]);
i=0;
}while(--c);
return ;
}
int main()
{
char input[MAX];
while(gets(input)!=NULL)
{
dis(input,strlen(input));
puts("");
}
return 0;
}
有發現BUG嗎?
輸入100000000000000就知道了!
所以我認為測資要再加強一點!