对于输入英文数字(one+two这样)进行数学运算输出three的后续
之前看了有个帖子出个了想法,就是输入英文数字进行数学运算,然后输出英文结果的题目。我自己写了下,出了点问题,运行没有错误,但是结果不正确,具体问题我提供加法部分的代码,麻烦各位看下是哪里不对#include <stdio.h>
#include <stdlib.h>
int main(void)
{ double a,b,c; //存储英文对应的运算数字
char i; //存储运算符
int m,n,d; //用于取余
int ag; //控制再次运算
int j=0,k=0; //j对应字符数组下标,k用于循环判断对应下标
const char string[10][6]={
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};
char str1[5]={"seven"}; //存储输入的英文数字
double jiafa(double x,double y);
double jianfa(double x,double y);
double chengfa(double x,double y);
double chufa(double x,double y);
int quyu(int x,int y);
printf("这是一个十进制简单的计算器,欢迎使用\n\n");
do
{
system("cls"); //清屏
printf("请输入 + 选择加法运算\tEnter确认\n\n");
printf("请输入 - 选择减法运算\tEnter确认\n\n");
printf("请输入 * 选择乘法运算\tEnter确认\n\n");
printf("请输入 / 选择除法运算\tEnter确认\n\n");
printf("请输入 %% 选择求余运算\tEnter确认\n\n");
printf("----------------------------------\n\n");
printf("请选择上述五种运算符后Enter,否则输入其他任意键后Enter确认退出\n\n");
scanf("%c",&i);
if(i=='0')
break;
printf("\n");
if(i=='+')
{
printf("请输入第一个数字,然后按Enter\n\n");
for(k=0;k<=5;k++) //输入要运算的第一个英文数字
{ //英文数字最多5个字符,故k<=5
scanf("%c",str1);
}
// getch();
// scanf("%lf",&a);
// gets(str1);
for(j=0;j<10;j++) //循环判断输入的英文字符对应数字并赋值给a
{ //此段有点问题a得到的值不正确,固定数字
if(strcmp(str1,string[j])==0)
a=j;
}
printf("a=%d",a); //验证第一个英文数字是否对应数字
printf("\n");
printf("请输入第二个数字,然后按Enter\n\n");
for(k=0;k<=5;k++) //输入要运算的第二个英文数字
{
scanf("%c",str1);
}
// scanf("%lf",&b);
// gets(str1);
for(j=0;j<10;j++) //循环判断输入的英文字符对应数字
{
if(strcmp(str1,string[j])==0)
b=j;
}
printf("b=%d",b); //验证第二个英文数字是否对应数字
printf("\n");
c=jiafa(a,b); //调用加法函数并将结果赋值给c
for(j=0;j<10;j++)
{
if(c==j)
{
printf("%s\n",string[j]);
}
}
printf("他们的和是:%lf\n\n",c);
getchar();
printf("请输入1后Enter再次运算,或非1任意键后按Enter退出\n\n");
scanf("%d",&ag);
getchar();
printf("\n");
}
[ 本帖最后由 wanglianyi1 于 2015-7-20 11:55 编辑 ]