用英文单词模拟数学计算我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 06:45:19
用英文单词模拟数学计算我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗?

用英文单词模拟数学计算我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗?
用英文单词模拟数学计算
我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗?

用英文单词模拟数学计算我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗?
#include
#include
/*用于存储10个数字的英文表示,可以双向翻译*/
char num[10][6] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
/*将输入英文单词翻译成数字*/
int parse(char * input)
{
int i = 0; int match = 0;
for (i = 0; i < 10; i++) {
match = strcmp(input,num[i]); /*到字典里面检查是否和输入一致*/
if (match == 0) return i; /*如果一致返回字典索引,即翻译成功*/
}
return -1;
}
/*由于人类书写习惯是数字高位在前,低位在后,所以用一个链表做的堆栈存储数字,以解决十进制数字位数问题*/
struct TStack {
int data;
struct TStack * next;
};
/*这个全局变量用于实现堆栈*/
struct TStack * root = 0;
/*数字压栈*/
void stack_push(int data)
{
/*分配栈顶*/
struct TStack * x = (struct TStack *)malloc(sizeof(struct TStack));
/*记录数据*/
x->data = data;
/*压栈操作*/
x->next = root;
root = x;
}
/*出栈操作,数据取出后以指针变量形式放到data中去,如果取出成功,返回1,返回值0表示到达栈底,无数据*/
int stack_pop(int * data)
{
struct TStack * x = root;
if (!x) return 0;
root = x->next ;
*data = x->data ;
free(x);
return 1;
}
/*利用堆栈求数据结果的程序*/
int SumFromStack(void)
{
/*x用于检查是否到达栈底,y用于读取堆栈数据,z用于进位处理,sum用于求得累加最终的和.tens数组用于表示当前数据的10进制幂*/
int x = 0,y = 0,z = 0,sum = 0;
int tens[] = {1,10,100,1000,10000};
do {
x = stack_pop(&y); /*从栈顶读取数据*/
if (x == 0) break; /*如果到达栈底表示计算完成,退出*/
sum += y * tens[z++]; /*栈顶读出数据后要乘以10进制幂,再累加到结果*/
}while(z < 5); /*最大计算到五位数*/
return sum; /*返回结果*/
}
/*同样以英文方式输出数据*/
void print(int C)
{
/*先将16进制整型数据转化为一个十进制字符串表达*/
char str[256]=""; size_t i = 0;
sprintf(str,"%d",C);
/*然后按照字符串求出当前位的值,再转回数据,根据数据到字典查询单词并输出*/
for (i = 0; i < strlen(str); i++) printf("%s ",num[str[i] - '0']);
printf("\n");
}
int main(void)
{
/*主程序,str用于读取字符串,AB用于存储数据,x用于分析字符串*/
char str[256] = ""; int A = 0,B = 0,x = 0;
do {
/*将所有变量,包括堆栈,置零*/
A = 0; B = 0; root = 0; x = 0;
for(;;) {
str[0] = 0; /*读取一个字符串进行判断*/
scanf("%s",str);
x = parse(str);/*将英文单词转化成数据*/
if (x < 0 ) { /*如果不是英文单词而是符号*/
if (str[0] == '+') A = SumFromStack(); /*遇到加号表示A已经输入完毕,将A从堆栈中取出并计算*/
if (str[0] == '=') { /*如果遇到等号表示B已经输入完毕,从堆栈中取出并计算B,然后结束输入操作*/
B = SumFromStack();
break;
}
}else{
/*如果就是数据就将数据压入堆栈*/
stack_push(x);
}
}
/*如果AB有一个非零则计算求和并打印英文结果*/
if (A || B) print(A + B);
/*循环直到AB皆为0*/
}while(A || B);
/*请按任意键结束程序*/
system("pause");
return 0;
}

用英文单词模拟数学计算我也要做这道题.但你给的答案有些地方不是很明白,不知道怎么把最后的输出结果改成用英文单词输出.能帮我修改下吗? 如何在c++环境下实现用英文单词模拟数学计算? 用英文单词模拟数学计算(输出要用英文单词)谢谢读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.具体的输入输出格式规定如下:输入格式: C++程序 用英文单词模拟数学计算1.读入两个小于100的正整数A和B,能够进行A+B,A-B,A*B,A/B计算.需要注意的是:A和B的每一位数字对应的英文单词给出.不允许负数出现.2.输入格式:测试输入包含若 c语言 用英文单词模拟数学计算读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.具体的输入输出格式规定如下:输入格式:测试输入包含若干测 C语言课程设计,打上注释!再给个流程图.给150分啊题目是这个:用英文单词模拟数学计算:读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出.具体 有个英文单词只知道怎么读,大家可以帮下忙么 我用拼音模拟一下读音,Q PANG“ 我现在模拟数学40,英语65,文综110,总分300多但我想考一本,接下来一个月我该怎么努力? 谁能帮我用c语言编写蛋白质的折叠啊(蒙特卡洛法)这是用蒙特卡洛法来模拟蛋白质折叠,但要用c语言来编程实现这一模拟, 几个函数拟合程度的分析~求见数学达人、、、貌似用线性回归,但遇到点问题如图,我有三个函数,一个是主函数,另外两个都是模拟之后的函数,据视觉分析,明显红色的那个模拟的更加吻合,请 给我一些小学升初中的模拟数学卷子 我要一份初一上学期数学期中模拟试卷 模拟爆炸声的英文单词例如BOOM 感觉英文单词怎么打“感觉”的英文单词怎么打?我会读,但不会写 有没有较好的小学数学填空,判断,选择,计算,应用题?最好有十几张小升初模拟试卷 微软模拟飞行2004(英文+汉化)安装过程我下了个“微软模拟飞行2004英文汉化RAR” 有CD1 CD2 CD3 CD4 和和一个yigeFlight2004cn1文件夹,我用虚拟光驱打开了,但不知道怎么装, 数学的英文单词 数学 的英文单词是?