当前位置:首页 » 编程语言 » c语言数字翻译成英文

c语言数字翻译成英文

发布时间: 2022-09-10 08:51:52

c语言数字翻译成英文

我刚刚写了一个,你看看可满足你的要求。呵呵。满足别忘了采纳啊。
#include<stdio.h>
char *num[]={
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};
main()
{
int n=0,i=0;
int str[20],len=0;
scanf("%d",&n);

int *a = (int*)malloc(n*sizeof(int));
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}

for(i=0; i<n; i++)
{
len=0;
if(a[i]==0)
{
str[0]=0;
len=1;
}
while( a[i]!=0 )
{
str[len++] = a[i]%10;
a[i]/=10;
}
while(len>0)
{
printf("%s ",num[str[--len]]);
}
printf("\n");
}

free(a);
getch();
}

㈡ c语言:将数字编号翻译成英文编号。

#include<stdio.h>
int main(){
int a[10],i,ind;
char *eng[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
long num1,num2;
scanf("%ld",&num1);
num2=num1;
ind=0;
while (num2!=0){
a[ind]=num2%10;
ind++;
num2=num2/10; }
printf("%ld English_exp: ",num1);
for(i=ind-1;i>=0;i--){ printf("%s ",eng[a[i]]); }}
对照一下看看

㈢ c语言关键字中英翻译机,要求创建文件搜索

程序使用结构链表实现。

由于我写的函数已经自动识别中英文输入,中英文翻译功能其实可以合并成一个选项(3,4选项),但你题目既然要求2项目,所以没合并。

根据题目,创建字典是覆盖性,既每次创建输入,都会覆盖掉原文件,但考虑后期扩展,我的函数writeFile可以不覆盖,在原文件后新增,具体看备注。

菜单显示是利用递归函数,如果你想新增功能,参照我选项改。

(另外所有函数异常,我都是采取抛出,没有处理,你想处理根据我的函数返回值写处理吧!)

#include<stdio.h>

#include<string.h>

#include<malloc.h>

#define FPATH "C:\keyWord.txt"

typedef struct keyWord

{

char kwCN[20];// 中文名

char kwEN[10];// 英文名

struct keyWord *next;

}KW;

void freeKWS(KW *kwsHead);//释放链表内存

int createDictionary(char *path);//创建字典。成功返回1 失败返回0

int writeFile(char *path,KW *kwsHead,int flag);//写入文件。成功返回1,失败返回0。flag:0新增;1修改或删除

KW *readFile(char *path);//读取文件。成功返回头节点,失败返回NULL。

int isCN(char *strCN);//判断字符串是否是全中文,是返回1,否返回0

void showKWS(char *path,char*keyCN,char *keyEN);//参数全部传NULL打印整个链表。keyCN!=NULL打印对应英文,keyZN!=NULL打印对应中文

void showMenu(int n);//递归函数打印菜单,第一次调用传值-1

void selectByKey(char *keyN);//输入中文输出英文,输入英文输出中,自动识别中英文关键字

int main()

{

//createDictionary("C:\keyWord.txt");

//showKWS(NULL,NULL);

showMenu(-1);


}

void showMenu(int n)//打印菜单

{

char cn[20],en[10];

switch(n)

{

case 1:

createDictionary(FPATH);

break;

case 2:

printf("当前中英文词典的内容: ");

showKWS(FPATH,NULL,NULL);

break;

case 3:

printf("请输入英文关键字:");

scanf("%s",en);

getchar();

selectByKey(en);

break;

case 4:

printf("请输入中文关键字:");

scanf("%s",cn);

getchar();

selectByKey(cn);

break;

case 5:

exit(0);

break;

case -1:

while(1)

{

system("cls");

printf("|***********************电子词典模拟软件***********************| ");

printf("1、创建关键字中英文词典 ");

printf("2、显示关键字中英文词典 ");

printf("3、输入英文关键字,查阅英汉词典 ");

printf("4、输入中文关键字,查阅汉英词典 ");

printf("5、退出 ");

printf("|*********************All rights reserved**********************| ");

printf("请选择菜单中的1或2或3或4或5 ");

scanf("%d",&n);

getchar();

showMenu(n);

}

break;

}

n=-1;

printf("----------按任意键返回上级菜单----------- ");

getchar();

}

void selectByKey(char *keyN)//输入中文输出英文,输入英文输出中,自动识别中英文关键字

{

if(isCN(keyN))

showKWS(FPATH,keyN,NULL);

else

showKWS(FPATH,NULL,keyN);

}

int isCN(char *strCN)//判断字符串是否包含中文,是返回1,否返回0

{

char *p=strCN;

while(*p!=0)

{

if((*p&0x80)==0x80)

return 1;

p++;

}

return 0;

}

void showKWS(char *path,char *keyCN,char *keyEN)//参数全部传NULL打印整个链表。keyCN!=NULL打印对应英文,keyZN!=NULL打印对应中文

{

KW *kwsHead=NULL;

kwsHead=readFile(path);

if(kwsHead)

while(kwsHead->next)

{

if(keyCN!=NULL && keyEN==NULL && strcmp(kwsHead->next->kwCN,keyCN)==0){

printf("对应英文关键字:%s ",kwsHead->next->kwEN);

break;

}

if(keyEN!=NULL && keyCN==NULL && strcmp(kwsHead->next->kwEN,keyEN)==0){

printf("对应中文关键字:%s ",kwsHead->next->kwCN);

break;

}

if(keyEN==NULL && keyCN==NULL)

printf("%s %s ",kwsHead->next->kwEN,kwsHead->next->kwCN);

kwsHead=kwsHead->next;

}

freeKWS(kwsHead);

}

int createDictionary(char *path)//创建字典。成功返回1 失败返回0

{

char cn[20],en[10];

KW *kwsHead=NULL,*kwTail=NULL,*kwNew=NULL;

kwsHead=(KW *)malloc(sizeof(KW));

if(!kwsHead)

return 0;

kwsHead->next=NULL;

printf("请输入关键字中文及英文(每行一组空格分割,输入NULL退出输入): ");

while(1)

{

cn[0]=en[0]=0;

scanf("%s",cn);

if(strcmp(cn,"NULL")==0)

break;

scanf("%s",en);

if(strcmp(en,"NULL")==0)

break;

kwNew=(KW *)malloc(sizeof(KW));

kwNew->kwCN[0]=kwNew->kwEN[0]=0;

kwNew->next=NULL;

strcpy(kwNew->kwCN,cn);

strcpy(kwNew->kwEN,en);

if(kwsHead->next)

kwTail->next=kwNew;

else

kwsHead->next=kwNew;

kwTail=kwNew;

}

getchar();

return writeFile(path,kwsHead,1);

}

KW *readFile(char *path)//读取文件。成功返回头节点,失败返回NULL。

{

FILE *fp=NULL;

char cn[20],en[10];

KW *kwsHead=NULL,*kwTail=NULL,*kwNew=NULL;

kwsHead=(KW *)malloc(sizeof(KW));

if(!kwsHead)

return NULL;

kwsHead->next=NULL;

fp=fopen(path,"r");

if(!fp)

{

printf("文件打开失败! ");

return NULL;

}

fseek(fp,0,SEEK_SET);

while(fscanf(fp,"%s%s",cn,en)!=-1)

{

kwNew=(KW *)malloc(sizeof(KW));

if(!kwNew)

return NULL;

kwNew->next=NULL;

strcpy(kwNew->kwCN,cn);

strcpy(kwNew->kwEN,en);

if(kwsHead->next)

kwTail->next=kwNew;

else

kwsHead->next=kwNew;

kwTail=kwNew;

}

fclose(fp);

return kwsHead;

}

int writeFile(char *path,KW *kwsHead,int flag)//写入文件。成功返回1,失败返回0。flag:0新增;1修改或删除

{

FILE *fp=NULL;

if(flag)

fp=fopen(path,"wt+");

else

fp=fopen(path,"rt+");

if(!fp)

{

printf("文件打开失败! ");

return 0;

}

fseek(fp,0,SEEK_END);

while(kwsHead->next)

{

fprintf(fp,"%s %s ",kwsHead->next->kwCN,kwsHead->next->kwEN);

kwsHead=kwsHead->next;

}


fclose(fp);

printf("数据写入文件成功! ");

freeKWS(kwsHead);

return 1;

}

void freeKWS(KW *kwsHead)//释放链表内存

{

KW *kwDel=NULL;

while(kwsHead->next)

{

kwDel=kwsHead->next;

kwsHead=kwsHead->next;

free(kwDel);

}

free(kwsHead);

}

㈣ 关于c语言设计,将n位数字,每一位转变为英文,859变为eight five nine

因为int型有最大值4294967295,所以用malloc动态生成指定大小的字符串后就不会对输入的数字有位数的限制了。不过我还是建议在c++下用string类或STL来完成此类问题比较方便。
以下是我针对你的问题用C语言写的以下代码,注意,位数应该在输入数字前去输入,这样才比较合理。
另外你的switch语句中缺少对于零值的判断,我对此进行了一些修改。
#include<stdio.h>
#include<stdlib.h>
void Display(char src);
int main()
{
int Size;
char* Num;
printf("输入位数:");
scanf("%d",&Size);
Num=(char *)malloc(sizeof(char)*Size);
printf("请输入你想要的数字:");
scanf("%s",Num);
for(int i=0;i<Size;++i)
Display(Num[i]);
free(Num);
printf("\n");
return 0;
}
void Display(char src)
{
switch(src-'0')
{
case 0:printf("zero ");break;
case 1:printf("one ");break;
case 2:printf("two ");break;
case 3:printf("three ");break;
case 4:printf("four ");break;
case 5:printf("five ");break;
case 6:printf("six ");break;
case 7:printf("seven ");break;
case 8:printf("eight ");break;
case 9:printf("nine ");break;
default:printf("error\n");
}
}

㈤ C语言 编写一个译码程序,把一个英语句子译成数字代码。

#include <stdio.h>

int main ()
{
char c;

while ((c = getchar()) != '\n')
{
if(c==' ')
{
printf("*");
continue;
}
c-=64;
if (c!=-32)
printf ("%d ",c);
}

printf (".");

return 0;
}
试试看符不符合你的要求

㈥ 请用C语言编写一个译码函数,把一个英语句子译成数字代码。译码规则是

#include<stdio.h>
intmain()
{
charc;
while((c=getchar())!=' ')
{
if(c=='')
printf("*");
else
{
if(c>=97&&c<=122)
printf("%d",c-=96);
else
{
if(c>=65&&c<=90)
printf("%d",c-=38);
else
printf("%c",c);
}
}
}
return0;
}

㈦ c语言在线翻译器

这个是大数加法的程序了,
1 先进行分割,
2 然后将对应的字符数字保存为数字逆序放到数组里,
3 在做加法,进位的时候后面以为加,低位和减去10为低位,
4 逆序输出结果

㈧ C语言翻译数字成英文单词的编程

void transLate(char * from,char * to)
{
printf("%s",to[from-'1']);
}
整个函数是错的

传入的第二个参数应该是char**to
第一个参数char*from没有转换成int类型,不可以这样使用,会造成segmentation fault

㈨ 如何用C语言将输入的数字转化成英语

对照字母的ASCII码进行输入数字,然后再输出字母。

和你的相比,不知是否复杂。
此程序的计算范围:0<=num<1000。如果还想要计算更大的数,可以在最后面加判断语句,方法类似。
#include<stdio.h>
void main()
{
char *Eng1[20]={"zero","one","two","three","four","five","six","seven",
"eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen",
"sixteen","seventeen","eighteen","nineteen"};
char *Eng2[8]={"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"};
int num;
printf("请输入数字: ");
scanf("%d",&num);
printf("对应的英文为: ");
if(num>=0&&num<=19)
printf("%s\n",Eng1[num]);
else if(num<100)
{
int s,y;
s=num/10;
y=num%10;
printf("%s %s\n",Eng2[s-2],Eng1[y]);
}
else if(num<1000)
{
int b,s,y;
b=num/100;
y=num%100;
if(y>9)
{
s=(num%100)/10;
y=(num%100)%10;
if(y==0)
printf("%s hundred and %s\n",Eng1[b],Eng2[s-2]);
else
printf("%s hundred and %s %s\n",Eng1[b],Eng2[s-2],Eng1[y]);
}
else
printf("%s hundred and %s\n",Eng1[b],Eng1[y]);
}
}

㈩ 求C语言1000内将英文翻译成数字,最后一步不能执行,为什么

strcpy(str, str2+k+1);

for (i =0; i<=9; i++)
{

if (strcmp(str1[i], str2) == 0)
printf("%d", i);
}//for
}//if

热点内容
qt编译vlcqt库 发布:2025-01-12 23:24:45 浏览:244
攻击linux服务器 发布:2025-01-12 23:17:01 浏览:6
天籁哪个配置亲民 发布:2025-01-12 23:16:26 浏览:482
零售通交易密码是什么 发布:2025-01-12 23:13:02 浏览:319
监控器压缩 发布:2025-01-12 22:51:29 浏览:248
android加密工具 发布:2025-01-12 22:51:19 浏览:896
服务器ip是东方有线 发布:2025-01-12 22:32:07 浏览:843
数据源码补码 发布:2025-01-12 22:29:41 浏览:868
魅族账号密码忘记怎么办啊 发布:2025-01-12 22:05:12 浏览:510
ps工作需要什么配置电脑 发布:2025-01-12 21:52:22 浏览:606