今天期末考试结束,回忆一下这个曾经令我骄傲了好几天的作业…
这个记得上课时老师给了两个数组,一个装单位,一个装大写的零到九,可是在操作时顺序总是变来变去,不画方格就懵了。虽然画了方格,额…经过近两天的挣扎还是没有完成。所以跟室友大佬讨论了一下,突然来了灵感,删掉了老师的那个装单位的二维数组,把单位放在一个个小数组里面,这样就不用倒来倒去了。有了这个基础接下来就是把10位数以内的各种情况考虑在内,然后各种条件嵌套开始删多余的单位了,确实情况很多,条件很乱,于是调试了一遍又一遍,终于成功了,但是我也很难说清楚,只有在一遍又一遍的改进中才完成。上课老师又继续用他的办法给我们演示了一下,可是他用了一个新函数,我们不知道原来还有这么一个函数,怪不得用他的办法写两天都写不出来。
下面是我的作业:
#include "stdio.h"
#include "string.h"
#define N 10
int main()
{
char Num[N+1];
char Chn[21]="零壹贰叁肆伍陆柒捌玖";
char zero[3]="零";
char Result[4*N+1]="";
char str[3];
char tem[2*N+1]="圆拾佰仟万拾佰仟亿拾";
char H[3];
char A[3]="圆";char B[3]="拾";char C[3]="佰";char D[3]="仟";char E[3]="万";char F[3]="亿";
printf("请输入你想要的钱数\n",N);
scanf("%s",Num);
if(strlen(Num)>10)
{
printf("欲望太大,满足不了 \n");
return -1;
}
int i=0;
if((Num[i]-'0')==0)
{
printf("请不要以零开头,我们满足不了你\n");
return 0;
}
while(Num[i])
{
if(Num[i]<'0' || Num[i]>'9')
{
printf("输入错误 \n");
return -2;
}
i++;
}
int n=i;
i=0;
while (Num[i])
{
if(Num[i]-'0')
{
str[0]=Chn[2*(Num[i]-'0')];
str[1]=Chn[2*(Num[i]-'0')+1];
str[2]='\0';
strcat(Result,str);
H[0]=tem[2*(n-i-1)];
H[1]=tem[2*(n-i-1)+1];
H[2]='\0';
strcat(Result,H);
i++;
}
else if(i==(n-5))
{
if((Num[n-8]-'0')!=0 || (Num[n-7]-'0')!=0 || (Num[n-6]-'0')!=0 )
{
strcat(Result,E);
i++;
}
else if((Num[i+1]-'0')!=0)
{
strcat(Result,zero);
i++;
}
else
i++;
}
else if(i==(n-9))
{
strcat(Result,F);
i++;
}
else if(i==(n-1))
{
strcat(Result,A);
i++;
}
else if((Num[i+1]-'0')!=0)
{
strcat(Result,zero);
i++;
}
else
i++;
}
printf("结果是\n%s\n",Result);
return 0;
}