关键词不能为空

当前您在: 主页 > 英语 >

数字翻译英文

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-19 04:05
tags:

-

2021年2月19日发(作者:starry)


/*


要求输入一个小于


999999999< /p>


的阿拉伯数字(小数包含在内)


,输出如下英语表达式

< p>


输入:


12345678.90123


输出:


twelve million three hundred and forty-five thousand six hundred and seventy-eight point


nine zero one two three.


要求有容错功能。




(



12.123.1234



ab123


*/


#include


#include






void


mx(int


num);















































//


定义了一个子程序


mx


,能够翻译


0~999


的整数



int main()


{






while(1)

























































//


无限循环,


便多次输入数据























{














char str[][10]={










char c[80];










int


m,n=0,Neg=0,sum=0;


























//Neg


用来标记是否为负


< p>
,sum


用来判断是否等于


999999999










int


i,j=0;




















































//i



j


分别用来


标记


'0'

< br>和小数点


'.'


的位置











int


sum1=0,sum2=0,sum3=0;



















//


将整数部分,以


3


位为一组,分


别赋值给


su m1,sum2,sum3










int


point=0,error=0;


































//p oint


标记小数点个数,


error


标记错误











printf(


请输入数字


:










scanf(














for(i=0;c[i]!='0';i++)










{














if(c[0]=='-')











































//< /p>


如果数组第


0



是负号


'-'














{


















for(m=0;c[m]!='0';m++)


















c[m]=c[m+1];



































//< /p>


数组每位向前移动


一位



















Neg=1;












































//Neg


赋值为


1



说明是负数。















}














if(c[i]=='.')





































j=i,point++;






































//< /p>


标记小数点位置,


同时


point+1


















else if(c[i]<'0'||c[i]>'9')





























error=1;











































//error


赋值


1




明存在除


0~9


以外的字符











}










if(j==0)


j=i;















































//


此循环结束,


j


指向小数点,


i


指向最后一位的后一位即

'0'












for(m=j-1;m>=0&&m>=j-9;m--)

















//


从个位开始,依次往左求和











{














sum+=(int)((c[m]-'0')*pow(10,n));














n++;










}










n=0;

























































//


循环结束,

n


赋值为


0










for(m=j-10;m>=0;m--)














n+=c[m]-'0';









































































//



断< /p>



入数据的正误











if((sum==999999999&&Neg==0)||n!=0)








{printf(


输入数字太大


n










if(Neg==1&&point<2&&error==0)



















printf(


















if(point>1||error==1)







































printf(


输入数字有



n


















else










{

























if(point==1)

































for(m=i-1;c[m]=='0';m--)


i--;














//


用于 剔除


32.2300000


后面多


余的


0















for(m=j-1;m>j-4;m--)





























//


计算


sum1,sum2,sum3


















if(m>=0){sum1+= (int)((c[m]-'0')*pow(10,n));n++;}n=0;














for(m=j-4;m>j-7;m--)


















if( m>=0){sum2+=(int)((c[m]-'0')*pow(10,n));n++;}n=0;














for(m=j-7;m>j-10;m--)


















if( m>=0){sum3+=(int)((c[m]-'0')*pow(10,n));n++;}n=0;



























if(sum3!=0)











































//


整数部分输出















{


















mx(sum3);printf(


















if(sum2!=0)


















{






















mx(sum2);printf(


















}


























mx(sum1);














}














else if(sum2!=0)














{

-


-


-


-


-


-


-


-



本文更新与2021-02-19 04:05,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/666661.html

数字翻译英文的相关文章