C语言 c++ 编程 转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 c++ 编程 转换相关的知识,希望对你有一定的参考价值。

1. 将数字转换成英文的数字 例:22--> Twenty two (包括带小数点的数字)
2. 将英语文字转换成数字 Twenty two point two--->22.2
注: 数字可以很大(12位) 有哪位有好的想法,算法, 无私分享一下, 可以不是源代码。(最好了 有的话)。 谢谢了 http://zhidao.baidu.com/question/371034389.html?oldq=1

这个可以用三位三位分开
比如
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);

参考技术A 这个要什么算法啊,纯粹枚举啊
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中提取内容,如果遇到百千万,就乘了再加后边的,等等吧
其他的自己处理一下,算法理清了就行了追问

谢谢思路!

参考技术B 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;
参考技术C 这个属于人类语言学范畴额....

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

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

谢谢了~!

参考技术D 英语总共才几个量词 百 千 百万 十亿 就用这几个来做判断就行了比如 1052你就判断是否大于一千小于百万 除以1000 然后分析余数是否过百 小数点也可按相同方法追问

谢谢啊! 数字转文字已经解决了 , 文字转数字 有点不太准确 做的

追答

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

C++ 梳理:跑通简单程序

C++ 结合了三个编程流派:

  1. 过程式编程:C 特性,结构化语言,强调过程
  2. 面向对象编程:C++ 对于 C 语言的补充,一切皆对象,强调数据
  3. 泛型编程(generic programming):由 C++ 模板支持,强调代码与数据类型无关(type independent)。

C++ 常用标准:

  • C98
  • C03
  • C11
  • C14

C++ 程序创建的机制

技术图片

  1. 使用文本编辑器编写源代码
  2. 编译源代码。编译器(compiler)会将源代码转换为平台相关的机器语言/目标代码
  3. 目标代码的链接。由于往往存在多个 C++ 库,需要链接器(linker)把这些目标代码以某种方式整合起来,最终形成可执行代码(executable code)

第一个 C++ 程序

 1 // myfirst.cpp -- displays a message
 2 
 3 #include <iostream>                           // a PREPROCESSOR directive
 4 int main()                                    // function header
 5                                              // start of function body
 6     using namespace std;                      // make definitions visible
 7     cout << "Come up and C++ me some time.";  // message
 8     cout << endl;                             // start a new line
 9     cout << "You won‘t regret it!" << endl;   // more output
10     return 0;                                 // terminate main()
11                                              // end of function body

编译源代码:

g++ myfirst.cpp

运行二进制文件:

./a.out

注意:

  • 避免使用 void main() 进行主函数的声明,这不是 C++ 标准格式。不同编译器有可能通过,有可能报错。
  • C++ 标准允许省略 return 0; ,如果不写编译器会自动添加。
  • iostream 称为包含文件(include file)或者头文件(head file)。iostream 提供输入输出相关的功能。
  •  #include <iostream> 是一个预处理命令,本质上是把 iostream 的内容替换在这一行,接着由编译器进行编译。
  • 命名空间(namespace):多个头文件可能有相同的函数名,命令空间可以避免函数名冲突。 using namespace std; 表示使用命名空间声明为 std 的头文件,里面的函数或者变量可以直接使用。如果没有这条语句,则需要使用 std::cout 这样的形式进行调用。
  • cout 是一个对象,知道如何显示出各种各样类型的数据。<< 是一个插入运算符(insertion operator),可以将字符串插入到输出流。

大多数程序员遵循这样的 C++ 源码风格:

  1. 每行一条语句;
  2. 函数的花括号的 和 分别占一行;
  3. 函数中的语句需要缩进;
  4. 函数名与其对应的括号之间不要加空格(为了区分其他 C++ 结构)。

简单的声明语句和赋值语句

// an addition operation
#include <iostream>

int main()

    using namespace std;
    int x1;
    int x2;
    int ans;
    x1 = 1;
    x2 = 2;
    ans = x1 + x2;
    cout << "x1 + x2 = " << ans << endl;

编译并运行后的输出:

x1 + x2 = 3

简单的输入语句

 1 // double your input number
 2 #include <iostream>
 3 
 4 int main()
 5 
 6     int now = 2019;
 7     int birth_year;
 8     std::cout << "What‘s your birth year?" << std::endl;
 9     std::cin >> birth_year;  // using cin
10     std::cout << "You‘re " << 2019 - birth_year << " years old." << std::endl;
11     return 0;
12 

编译运行后会提示输入,输入 1992,得到运算之后的输出:

What‘s your birth year?
1992
You‘re 27 years old.

使用 cmath 头文件:

 1 // using sqrt
 2 
 3 #include <iostream>
 4 #include <cmath>
 5 
 6 int main()
 7 
 8     using std::cout;
 9     using std::cin;
10     using std::endl;
11     using std::sqrt;
12 
13     float num;
14     cout << "Give me a number: ";
15     cin >> num;
16     cout << "sqrt(" << num << ") = " << sqrt(num) << endl;
17 

编译运行,输入 25 后输出:

Give me a number: 2
sqrt(2) = 1.41421

简单的自定义函数

自定义函数需要声明函数原型:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int add(int, int);  // function prototype
 6 
 7 int main()
 8 
 9     int x1 = 3;
10     int x2 = 4;
11     int sum = add(x1, x2);
12     cout << "3 + 4 = " << sum << endl;
13 
14 
15 int add(int n1, int n2)
16 
17     return n1 + n2;
18 

输出如下:

3 + 4 = 7

 

参考

  • 《C++ Primer Plus》by Stephen Prata

 

以上是关于C语言 c++ 编程 转换的主要内容,如果未能解决你的问题,请参考以下文章

bmp格式转换PNG格式 c语言或c++编程

C和C++大全

C和C++大全

C++和VisualC++有啥区别?

C++编程题

C语言注释转c++注释