|
이 프로그램은 숫자를 입력하면 한글로 나타내주는 건데요.....
문제가 있습니다... ㅜㅜ -123을 입력하면 (음수 백이십삼)이 출력되어야
하는데요....... (음수 천백이십삼)이라고 출력되는데 밤을새서 해봐도
어디가 문제인지 모르겠어요 ㅜㅜ
고수님들 제발 가르쳐주세요.......
#include <stdio.h>
#include <string.h>
main()
{
char pp[13],p[13],k[13];
char *dan={"음수 "};
char *dan1[]={"","만","억","조"};
char *dan2[]={"영","일","이","삼","사","오","육","칠","팔","구"};
char *dan3[]={"","십","백","천"};
int a=0,i,c=0,z=0;
int kk[13];
back1:;
printf("숫자를 입력하세요[부호포함13자리이하] :\n ");
gets(pp);
a = strlen(pp);
if(a>13){
printf("13자리이하로 입력하세요..^^\n");
goto back1;
}
for(i=a-1;i>=1;i--){
if(pp[i]<0x30 || pp[i]>0x39){
printf("입력하신 데이터는 숫자가 아닙니다.\n");
goto back1;
}
}
if(pp[0]=='-'){
printf("%s",dan);
for(i=0;i<=a-1;i++)
p[i]=pp[i];}
else{
for(i=0;i<=a-1;i++)
p[i]=pp[i];
}
while(p[a-1]=='0'){
a--;
if(a==0){
printf("%s",dan2[0]);
break;}
}
c=a;
for(i=0;i<=a-1;i++){
z=a%4;
if(p[i]=='1' && i==a-1)
printf("%s",dan2[1]);
else if(p[i]=='2')
printf("%s",dan2[2]);
else if(p[i]=='3')
printf("%s",dan2[3]);
else if(p[i]=='4')
printf("%s",dan2[4]);
else if(p[i]=='5')
printf("%s",dan2[5]);
else if(p[i]=='6')
printf("%s",dan2[6]);
else if(p[i]=='7')
printf("%s",dan2[7]);
else if(p[i]=='8')
printf("%s",dan2[8]);
else if(p[i]=='9')
printf("%s",dan2[9]);
if(z==0){
if(i%4==2 && p[i]!='0')
printf("%s",dan3[1]);
else if(i%4==1 && p[i]!='0')
printf("%s",dan3[2]);
else if(i%4==0 && p[i]!='0')
printf("%s",dan3[3]);}
if(z==1){
if(i%4==1 && p[i]!='0')
printf("%s",dan3[3]);
else if(i%4==2 && p[i]!='0')
printf("%s",dan3[2]);
else if(i%4==3 && p[i]!='0')
printf("%s",dan3[1]);}
if(z==2){
if(i%4==3 && p[i]!='0')
printf("%s",dan3[2]);
else if(i%4==2 && p[i]!='0')
printf("%s",dan3[3]);
else if(i%4==0 && p[i]!='0')
printf("%s",dan3[1]);}
if(z==3){
if(i%4==3 && p[i]!='0')
printf("%s",dan3[3]);
else if(i%4==1 && p[i]!='0')
printf("%s",dan3[1]);
else if(i%4==0 && p[i]!='0')
printf("%s",dan3[2]);}
c--;
if(c==12)
printf("%s",dan1[3]);
else if(c==8)
printf("%s",dan1[2]);
else if(c==4)
printf("%s",dan1[1]);
}
}
|