C语言 人民币的大写?

题目描述
输入一个三位数的整数(100至999)输出这个数的人民币大写。
输入
输入100至999的整数。
输出
人民币大写。可能有多组数据。
样例输入 Copy
123
400
560
708
999
样例输出 Copy
壹佰贰拾叁元整
肆佰元整
伍佰陆拾元整
柒佰零捌元整
玖佰玖拾玖元整

#include<stdio.h>

#include<math.h>

int main()

{

char a[11][20]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

int n;

while(scanf("%d",&n)!=EOF)

{

int t=0,b[111]={0},k=0;

t=n;

while(t!=0)//个位上的书提取出来 

{

b[k++]=t%10;

t/=10;

}

for(int i=0;i<10;i++)//百位 

{

if(b[2]==i)

printf("%s佰",a[i]);

}

for(int i=0;i<10;i++)//十位 

{

if(b[1]==i)

{

if(b[1]!=0)

printf("%s拾",a[i]);

else

printf("零");

}

}

for(int i=0;i<10;i++)//个位 

{

if(b[0]==i)

{

if(b[0]!=0)

printf("%s元整",a[i]);

else

printf("元整");

}

}

printf("\n");

}

return 0;

}

希望能帮到你,望采纳;

追问

哪里出问题了,不对

追答

if(b[1]==0&&b[0]!=0)
你把//十位处的内循环中的else改成上面的;

你把//十位

内循环最里面的else改为
if(b[1]==0&&b[0]!=0)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-13
给你一个思路吧
0-9用一个数组来进得代码翻译
用字符串数组char[0]=零,Char[1]=壹……以此类推,到Char[9]=玖
再组一个,,整,拾,佰,仟,的字串数组,在循环中可翻译出进位单位,循环次数可以把整数转成字串后,用Len得出字串长度,就是循环的总次数
然后整个循环,拿输入的数除以10,并用临时变量分别存入整数部分及余数部份
用一个字串储TxT=TxT十Char[i]+单位数组[i]

当第一次循环取的余数为个位数,
第二次循环时以整数部分再除10
取整数部分及余数部分,以此类推
直到循环结束,即可得出你想要的结果
相似回答