问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 c++ 编程 转换

发布网友 发布时间:2022-05-19 00:24

我来回答

5个回答

热心网友 时间:2023-11-24 09:33

这个可以用三位三位分开
比如
1,111,111,111
每三位是按照1000以内的读,三位与三位之间是用百万,亿,千这样的读法的。我以前做过的

下面的是英文转数字的代码,数字转英文的思想是差不多的。
#include<stdio.h>
#include<string.h>
main()
{
int sum,i,sign,len,j,k,temp;
char num[1000],n[1000];
while(gets(num)&&strcmp(num,"\0")!=0)
{
sign=1;
len=strlen(num);
sum=0;
temp=0;
for(j=i=0;;i++,j++)
{
n[j]=num[i];
if(n[j]==' '||n[j]=='\0')
{
n[j]='\0';
j=-1;
if(strcmp(n,"negative")==0)
sign=-1;
else if(strcmp(n,"zero")==0)
temp+=0;
else if(strcmp(n,"one")==0)
temp+=1;
else if(strcmp(n,"two")==0)
temp+=2;
else if(strcmp(n,"three")==0)
temp+=3;
else if(strcmp(n,"four")==0)
temp+=4;
else if(strcmp(n,"five")==0)
temp+=5;
else if(strcmp(n,"six")==0)
temp+=6;
else if(strcmp(n,"seven")==0)
temp+=7;
else if(strcmp(n,"eight")==0)
temp+=8;
else if(strcmp(n,"nine")==0)
temp+=9;
else if(strcmp(n,"ten")==0)
temp+=10;
else if(strcmp(n,"eleven")==0)
temp+=11;
else if(strcmp(n,"twelve")==0)
temp+=12;
else if(strcmp(n,"thirteen")==0)
temp+=13;
else if(strcmp(n,"fourteen")==0)
temp+=14;
else if(strcmp(n,"fifteen")==0)
temp+=15;
else if(strcmp(n,"sixteen")==0)
temp+=16;
else if(strcmp(n,"seventeen")==0)
temp+=17;
else if(strcmp(n,"eighteen")==0)
temp+=18;
else if(strcmp(n,"nineteen")==0)
temp+=19;
else if(strcmp(n,"twenty")==0)
temp+=20;
else if(strcmp(n,"thirty")==0)
temp+=30;
else if(strcmp(n,"forty")==0)
temp+=40;
else if(strcmp(n,"fifty")==0)
temp+=50;
else if(strcmp(n,"sixty")==0)
temp+=60;
else if(strcmp(n,"seventy")==0)
temp+=70;
else if(strcmp(n,"eighty")==0)
temp+=80;
else if(strcmp(n,"ninety")==0)
temp+=90;
else if(strcmp(n,"hundred")==0)
temp*=100;
else if(strcmp(n,"thousand")==0)
{
temp*=1000;
sum+=temp;
temp=0;
}
else if(strcmp(n,"million")==0)
{
temp*=1000000;
sum+=temp;
temp=0;
}
}
if(num[i]=='\0')
break;
}
sum+=temp;
sum*=sign;
printf("%d\n",sum);
}
}

热心网友 时间:2023-11-24 09:33

这个可以用三位三位分开
比如
1,111,111,111
每三位是按照1000以内的读,三位与三位之间是用百万,亿,千这样的读法的。我以前做过的

下面的是英文转数字的代码,数字转英文的思想是差不多的。
#include<stdio.h>
#include<string.h>
main()
{
int sum,i,sign,len,j,k,temp;
char num[1000],n[1000];
while(gets(num)&&strcmp(num,"\0")!=0)
{
sign=1;
len=strlen(num);
sum=0;
temp=0;
for(j=i=0;;i++,j++)
{
n[j]=num[i];
if(n[j]==' '||n[j]=='\0')
{
n[j]='\0';
j=-1;
if(strcmp(n,"negative")==0)
sign=-1;
else if(strcmp(n,"zero")==0)
temp+=0;
else if(strcmp(n,"one")==0)
temp+=1;
else if(strcmp(n,"two")==0)
temp+=2;
else if(strcmp(n,"three")==0)
temp+=3;
else if(strcmp(n,"four")==0)
temp+=4;
else if(strcmp(n,"five")==0)
temp+=5;
else if(strcmp(n,"six")==0)
temp+=6;
else if(strcmp(n,"seven")==0)
temp+=7;
else if(strcmp(n,"eight")==0)
temp+=8;
else if(strcmp(n,"nine")==0)
temp+=9;
else if(strcmp(n,"ten")==0)
temp+=10;
else if(strcmp(n,"eleven")==0)
temp+=11;
else if(strcmp(n,"twelve")==0)
temp+=12;
else if(strcmp(n,"thirteen")==0)
temp+=13;
else if(strcmp(n,"fourteen")==0)
temp+=14;
else if(strcmp(n,"fifteen")==0)
temp+=15;
else if(strcmp(n,"sixteen")==0)
temp+=16;
else if(strcmp(n,"seventeen")==0)
temp+=17;
else if(strcmp(n,"eighteen")==0)
temp+=18;
else if(strcmp(n,"nineteen")==0)
temp+=19;
else if(strcmp(n,"twenty")==0)
temp+=20;
else if(strcmp(n,"thirty")==0)
temp+=30;
else if(strcmp(n,"forty")==0)
temp+=40;
else if(strcmp(n,"fifty")==0)
temp+=50;
else if(strcmp(n,"sixty")==0)
temp+=60;
else if(strcmp(n,"seventy")==0)
temp+=70;
else if(strcmp(n,"eighty")==0)
temp+=80;
else if(strcmp(n,"ninety")==0)
temp+=90;
else if(strcmp(n,"hundred")==0)
temp*=100;
else if(strcmp(n,"thousand")==0)
{
temp*=1000;
sum+=temp;
temp=0;
}
else if(strcmp(n,"million")==0)
{
temp*=1000000;
sum+=temp;
temp=0;
}
}
if(num[i]=='\0')
break;
}
sum+=temp;
sum*=sign;
printf("%d\n",sum);
}
}

热心网友 时间:2023-11-24 09:33

这个要什么算法啊,纯粹枚举啊
1 设两个数组,数组1={ ONE ,TWO,....... }
数组2={1,2,3,。。。100,1000,10000,1000000}
数组1要把英文的1,2,3,。。10,11,12,。。20,30,40.。。。百,千、万,等收集全,数组2和数组1对应为数字,当然可以加上负号和小数点
2,对输入的字符串进行分解,这个不用我教你了吧,遇到空格算一个,然后从数组1中找到位置,从数组2中提取内容,如果遇到百千万,就乘了再加后边的,等等吧
其他的自己处理一下,算法理清了就行了追问谢谢思路!

热心网友 时间:2023-11-24 09:33

这个要什么算法啊,纯粹枚举啊
1 设两个数组,数组1={ ONE ,TWO,....... }
数组2={1,2,3,。。。100,1000,10000,1000000}
数组1要把英文的1,2,3,。。10,11,12,。。20,30,40.。。。百,千、万,等收集全,数组2和数组1对应为数字,当然可以加上负号和小数点
2,对输入的字符串进行分解,这个不用我教你了吧,遇到空格算一个,然后从数组1中找到位置,从数组2中提取内容,如果遇到百千万,就乘了再加后边的,等等吧
其他的自己处理一下,算法理清了就行了追问谢谢思路!

热心网友 时间:2023-11-24 09:33

C-Free编译通过,大概就是这样

#include <iostream>
#include <cstring>
using namespace std;

int main()
{

string num,en_num="";
cin>>num;
int i=num.length();
while(i>=0)
{
switch(num[i])
{
case '0':
en_num="zero "+en_num;
break;
case '1':
en_num="one "+en_num;
break;
case '2':
en_num="two "+en_num;
break;
case '3':
en_num="three "+en_num;
break;
case '4':
en_num="four "+en_num;
break;
case '5':
en_num="five "+en_num;
break;
case '6':
en_num="six "+en_num;
break;
case '7':
en_num="seven "+en_num;
break;
case '8':
en_num="eight "+en_num;
break;
case '9':
en_num="nine "+en_num;
break;
case '.':
en_num="point "+en_num;
}
i--;
}
cout<<en_num<<endl;
return 0;
}

热心网友 时间:2023-11-24 09:33

C-Free编译通过,大概就是这样

#include <iostream>
#include <cstring>
using namespace std;

int main()
{

string num,en_num="";
cin>>num;
int i=num.length();
while(i>=0)
{
switch(num[i])
{
case '0':
en_num="zero "+en_num;
break;
case '1':
en_num="one "+en_num;
break;
case '2':
en_num="two "+en_num;
break;
case '3':
en_num="three "+en_num;
break;
case '4':
en_num="four "+en_num;
break;
case '5':
en_num="five "+en_num;
break;
case '6':
en_num="six "+en_num;
break;
case '7':
en_num="seven "+en_num;
break;
case '8':
en_num="eight "+en_num;
break;
case '9':
en_num="nine "+en_num;
break;
case '.':
en_num="point "+en_num;
}
i--;
}
cout<<en_num<<endl;
return 0;
}

热心网友 时间:2023-11-24 09:34

这个属于人类语言学范畴额....

处理这个好麻烦的。要合理的写一个人类语言的算法,做不来,你加油吧。

穷举的方法也太傻了,效率上不说,如果有1亿,那岂不是要定义一亿个?追问谢谢了~!

热心网友 时间:2023-11-24 09:34

这个属于人类语言学范畴额....

处理这个好麻烦的。要合理的写一个人类语言的算法,做不来,你加油吧。

穷举的方法也太傻了,效率上不说,如果有1亿,那岂不是要定义一亿个?追问谢谢了~!

热心网友 时间:2023-11-24 09:35

英语总共才几个量词 百 千 百万 十亿 就用这几个来做判断就行了比如 1052你就判断是否大于一千小于百万 除以1000 然后分析余数是否过百 小数点也可按相同方法追问谢谢啊! 数字转文字已经解决了 , 文字转数字 有点不太准确 做的

追答貌似下面的可以可以。。。没验证 不过我想思路应该是对的

热心网友 时间:2023-11-24 09:35

英语总共才几个量词 百 千 百万 十亿 就用这几个来做判断就行了比如 1052你就判断是否大于一千小于百万 除以1000 然后分析余数是否过百 小数点也可按相同方法追问谢谢啊! 数字转文字已经解决了 , 文字转数字 有点不太准确 做的

追答貌似下面的可以可以。。。没验证 不过我想思路应该是对的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 全面风险管理模式阶段的特点有多选题 - 信息提示 求编写c语言的工具 NBA历史上最强的C是谁? 数控钻床的加工尺寸? CNC装置常用的输入输出设备有哪些? CNC方面 , 烤十寸蛋糕和八寸的时间一样吗? 经常说梦话怎么办? 数控加工最大尺寸由什么决定 总说梦话是怎么回事 如果用c表示摄氏温度,f表示华氏温度,则c和f之间的关系是:c=5&#92;9(f-32)某日伦敦和纽约的 老说梦话是怎么回事呀! 老说梦话是怎么回事啊,,? 没做梦却经常说梦话是怎么回事 cnc技术员发现产品尺寸不对该怎么办? 晚上经常说梦话 怎么办 有什么办法 Cnc系统z轴移动尺寸与程序设置尺寸不一样,x轴正常,z大了约1.8倍 CNC在刀偏表上怎样调产品的尺寸? 老是说梦话 怎么治疗 无尽之剑2。内购破解能不能用! 无尽之剑2破解内购. 求无尽之剑命运破解版!就是可以内购的 无尽之剑内购破解,求热。 无尽之剑2内购破解 世界上出土过哪些铭文标明“百炼”的刀器? 怎么样让荧光棒永不暗 关于无尽之剑内购补丁的问题 买家在平台下单刀器,外卖员的举动为何会引发网友盛赞? 现在用什么可以破解无尽之剑2的内购 穿越火线中有几把刀器??分别是:? 哪个苹果助手能下无尽之剑3无限金币版 求锋利的刀器……… 忍者为什么都是用刀? 在旅游区买的刀器纪念品,是否可以通过火车的安检? 广州哪里有复合板刀器买 刀器可以寄顺风快递吗 无尽之剑二内购问题 不是破解的 三更半夜私闯民宅打人,为了自卫,使用刀器犯罪吗? 请问谁知道热血江湖怎样打造衣服和刀器?