C语言实验:输入一个整数的小写金额值,转化为大写金额值并输出

同学说C++看不懂,我就改成C语言了。。


思想很简单,但是要注意,汉语是每五位为一个基本单位,其中分别是不输出,十,百,千,万,所以权重函数控制好单位就ok了。其次注意,strlen(a)-1,末尾有'\0',还有strrev函数在G++下没有。。。我了个去刚装上ubuntu,结果还得跑到舍友电脑上调试。。。

下面是源码:

#include <stdio.h>
#include <string.h>

void trans(int a)
{
    if(a == 1)printf("壹");

    else if(a == 2)printf("贰");

    else if(a == 3)printf("叁");

    else if(a == 4)printf("肆");

    else if(a == 5)printf("伍");

    else if(a == 6)printf("陆");

    else if(a == 7)printf("柒");

    else if(a == 8)printf("捌");

    else if(a == 9)printf("玖");

    else if(a == 0)printf("零");

}
void weight(int i)
{
    if(i==1||i==5||i==9)
        printf("拾");
    if(i==2||i==6||i==10)
        printf("佰");
    if(i==3||i==7||i==11)
        printf("仟");
    if(i==4)
        printf("万");
    if(i==8)
        printf("亿");
    if(i==0)
        printf("元整\n");
}
int main()
{
	while(1)
	{
		char a[10];
		scanf("%s",a);
		strrev(a);
		for(int i=strlen(a) - 1; a[i]; i--)
		{
			trans(a[i]-'0');
			weight(i);
		}
	}
}


你可能感兴趣的:(C语言实验:输入一个整数的小写金额值,转化为大写金额值并输出)